π Authentication & Authorization
JWT, Claims, Policies e Role-based access no ASP.NET Core
Authentication = quem e voce? (identidade) | Authorization = voce pode fazer isso? (permissao). Sao dois middlewares separados que devem rodar nessa ordem.
Authentication vs Authorization
| Aspecto | Authentication (AuthN) | Authorization (AuthZ) |
|---|---|---|
| Pergunta | Quem e voce? | Voce pode fazer isso? |
| Middleware | UseAuthentication() | UseAuthorization() |
| Resultado | Popula HttpContext.User (ClaimsPrincipal) | Permite ou nega acesso (200/403) |
| Falha | 401 Unauthorized | 403 Forbidden |
| Schemes | JWT Bearer, Cookie, OAuth, OpenID Connect | Roles, Claims, Policies, Custom Requirements |
Esquemas de autenticacao
| Scheme | Quando usar | Stateless? |
|---|---|---|
| JWT Bearer | APIs, SPAs, mobile apps, microservices | Sim |
| Cookie | Server-side rendered apps (Razor, MVC) | Nao β session no servidor |
| OAuth 2.0 / OIDC | Login via Google, Azure AD, Keycloak | Depende do token resultante |
| API Key | Service-to-service, webhooks | Sim |
Authentication vs Authorization β explique a diferenca com exemplo
Authentication e como mostrar sua identidade na portaria β voce prova quem e (token, credenciais). Authorization e a portaria verificar se voce tem acesso ao andar 5. No ASP.NET Core, Authentication popula
HttpContext.User com claims. Authorization verifica essas claims contra policies. Um pode passar sem o outro: voce pode estar autenticado mas nao autorizado (403), ou nao autenticado (401).