cloneAmazon-E2E-react em andamento: https://github.com/WelBert-dev/amazonClone-E2E-react
-
Ferramentas utilizadas:
- BackEnd (API): Asp.NetCore Web API (Finalizado 17/08/2022 - Básico)
- Namespace: VShop.Products
- Detalhes e step by step de implementação e correção de bugs em: /VShop.Products/README.md
- Arquitetura adotada: MVC
- Banco de dados: MySQL
- FrontEnd (Apresentação web): Asp.NetCore Web MVC (Em andamento)
- Namespace: VShop.Web
- Detalhes e step by step de implementação e correção de bugs em: /VShop.Products/README.md
- Arquitetura: MVC
- BackEnd (API): Asp.NetCore Web API (Finalizado 17/08/2022 - Básico)
-
Fontes/Créditos: Macoratti
- PlayList completa: https://www.youtube.com/playlist?list=PLJ4k1IC8GhW1UtPi9nwwW9l4TwRLR9Nxg
- Modificações foram feitas ao longo da implementação!
-
Ideias futuras:
- Utilizar o projeto como base e parsing "amazonClone-react" <=> "amazonClone-AspNetCore"
- Parsing reactjs <=> Asp.NetCore MVC
- Projeto "amazonClone-react" em andamento: https://github.com/WelBert-dev/amazonClone-react
-
Conceitos/Paradigmas/Códigos utilizados:
-
BackEnd (API):
-
REST (80%)
-
Contexto: DBContext (EntityFrameworkCore) -> /VShop.Products/README.md -> Step 3 e 4
-
Fluent API -> /VShop.Products/README.md -> Step 5 e 6
- Sobrescrevendo convensões do EF (antes de utilizar Migrations)
- Foi adotado para não poluir o código com Data Annotations nos Models.
-
Migrations -> /VShop.Products/README.md -> Step 5, 6, 7, 8
- Utilizado para unir Banco e Aplicação (Data Dicionary)
- Utilizamos Fluent API antes das migrações para definição correta dos campos no DB
- Criamos as tabelas, e inserimos os primeiros registros para testes
- Pasta com as migrações: /VShop.Products/Migrations
-
DTO's -> /VShop.Products/README.md -> Step 9
- Data Transfer Objects: Paradigma utilizado para converter Entidades em DTO's
- Fonte mais detalhada: https://pt.stackoverflow.com/questions/31362/o-que-%C3%A9-um-dto
- Client<\usa>API{ [Controller] -> [Service] -> [Repository]<\usa>[Database] }.
- Detalhes mais ponfundos em Step 9 (Step mais complexo rsrsrs).
-
Correção de Bugs (Relacionamento nos Models) -> Step 13 e 14
- Error: A possible object cycle was detect
- Correção: Json Ignore
- Detalhes mais profundos nos Steps
-
Detalhes mais profundos nos Steps
- Alguns steps foram ignorados por ser "Básico"
- Pré requisitos para entendimento:
- Arquitetura MVC
- Banco de dados
- AspNetCore EntityFramework
-
Autenticação OAuth2 (API)
-
Fluxograma do protocolo:
- Client Autorização ao Resource Owner (Dono do recurso)
- Resource Owner <Autoriza ou Não o pedido> enviando uma "Garantia de autorização.
- Client ao Autorization Server (Servidor de autorização)
- Se a garantia for válida o Autorization Server Gera um Acess Token e envia ao Client.
- Client finalmente faz o request do recurso desejado ao Resource Server, enviando no cabeçalho o Token.
- Resource Server verifica integridade do Token e entrega por fim o recurso.
-
OpenID Connect (OIDC): Permite executar o logon único dos usuários e apresenta o conceito de um id token: Token de segurança que permite verificar a identidade do usuário e obter informações básicas sobre o usuário.
- É Uma camada de identidade simples sobre o OAuth2.0 e complementa o fluxo de autenticação OAuth existentes fornecendo informações sobre os usuários aos clientes de uma maneira bem descrita.
- Resumo: Camada a mais, a cima do OAuth (Não faz parte do protocolo, ele é um complemento de tal.
-
IdentityServer: Framework OpenID Connect e OAuth2.0 que podemos utilizar com a AspNetCore. A Ideia principal ap utilziar o IS é centralizar o provedor de autenticação em uma API separada.
- Utilizado no projeto: Duende IdentityServer.
- Protege seus recursos.
- Autentica usuários usando um repositório de contas local ou por meio de um provedor de identidade externo.
- Fornece gerenciamento de sessão e logon único.
- Gerencia e autentica clientes.
- Emite tokens de identidade e acesso para os clientes.
- Valida tokens.
- Resumo: Ele oferece controle de acesso para nossas API's.
- Duende IdentityServer Licença: RPL (Reciprocal Public Licence).
- Em ambiente de teste: Livre.
- Em ambiente de produção é necessário uma licença!
- Terminologias do Duende IdentityServer:
- Aplicativos Client:
- Resources:
- IdentityServer:
- Identity Token:
- Access Token:
- Utilizado no projeto: Duende IdentityServer.
-
-
-
FrontEnd (Web): Em andamento
-