Authentication in the Host
Diferença entre Autenticação e Autorização
Authentication (Autenticação) para definir quem é vocêAuthorization (Autorização) para saber quais acessos você tem
A autenticação do Web Api é compartilhada com o MVC.
Referência com mais informações:
http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api
Referência para os diferentes tipos de autenticações e formas de configurações:
http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api
Authentication using Message Handlers
Exemplo de autenticação somente didática (que não deve ser usado em produção) utilizando o DelegatingHandler:https://github.com/MicrosoftLearning/WebAPIDesign/blob/master/05%20-%20Security/05bMessageHandlerAuthentication/Handlers/NaiveAuthHandler.cs
Token-based Authentication
Neste modelo:· Autorização gera um Token
· Token dá acesso ao serviço
· Protege a senha que só é utilizada por uma parte terceira (Facebook, Google, Microsoft, Twitter etc)
- Token é passado no cabeçalho das requisições
Authorization Filters
Custom Authorization Filters (Filtro de autorização customizado)
Exemplo de filtro de Autorização somente didática (que não deve ser usado em produção)https://github.com/MicrosoftLearning/WebAPIDesign/blob/master/05%20-%20Security/05dAuthorizationFilter/Filters/NaiveAuthorizationFilter.cs
Role-based Authorization (Autorização baseada em perfil)
Definição da role baseada no que foi passado como usuário. Exemplo somente didático (que não deve ser usado em produção)https://github.com/MicrosoftLearning/WebAPIDesign/blob/master/05%20-%20Security/05eRoleBasedAuthorization/Filters/NaiveAuthorizationFilter.cs
Utilização do Metadadados Authorize especificando quais perfis - separados por vírgula “,” - tem permissão aos métodos do Controller
https://github.com/MicrosoftLearning/WebAPIDesign/blob/master/05%20-%20Security/05eRoleBasedAuthorization/Controllers/WidgetsController.cs
Preventing Cross-Site Request Forgery
Cross-Site Request Forgery
Ataque MaliciosoEnvio para o seu site através de sites terceiros
Tirar vantagem dos cookies gerados para os usuários
Para prevenir, utilizar anti-forgery token (tokan contra a falsificação)
Especialmente importante se vocês habilitar CORS (Cross origin resource sharing)
Mais informações sobre o assunto:
http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-%28csrf%29-attacks
http://www.codeproject.com/Articles/793384/ASP-NET-Anti-Forgery-Tokens-internals
Implementação de verificação de Anti Forgery através do Handler:
https://github.com/MicrosoftLearning/WebAPIDesign/blob/master/05%20-%20Security/05fAntiForgery/Handlers/AntiForgeryHandler.cs