Você está na página 1de 6

VERSÃO 1.

0
14/12/2019

PLANO DE AULA
PROTEGENDO SUAS API’S COM OAUTH 2.0
O PROBLEMA
Sua empresa está crescendo e Microsserviços é a arquitetura escolhida. A jornada começou e
aquele sistema monolito começou a se transformar em diversas API’s.
Os times de arquitetura e segurança disponibilizaram um servidor OAuth 2.0. Agora você foi
incumbido de criar uma nova API em ASP.NET Core .
Para proteger os dados do seu serviço é necessário validar cada uma das requisições. O Client
frontend vai enviar um Token JWT para sua API e ela precisa precisa integrar com o servidor OAuth
2.0 para fazer a validação da request.

A SOLUÇÃO
Crie um novo projeto ASP.NET Core Web Application (File > New Project). Coloque o nome
de SecureApi. Na tela seguinte escolha a opção Web Application (Model-View-Controller),
conforme figuras abaixo:
Agora em Solution Explorer pressione o botão direito em Dependencies e em seguida vá até a
opção Manage Nuget Packages.
Procure por IdentityServer4.AccessTokenValidation e instale o pacote.
Assim que terminar a instalação, abra o arquivo Startup.cs, e faça as seguintes alterações:

public void ConfigureServices(IServiceCollection services)


{
// …
services.AddAuthentication(o =>
{
o.DefaultScheme =
IdentityServerAuthenticationDefaults.AuthenticationScheme;
o.DefaultAuthenticateScheme =
IdentityServerAuthenticationDefaults.AuthenticationScheme;
})
.AddIdentityServerAuthentication(options =>
{
options.Authority = "<SSO URL>";
options.RequireHttpsMetadata = false;
options.ApiSecret = "api-secret";
options.ApiName = "report-api";
options.RoleClaimType = JwtClaimTypes.Role;
options.NameClaimType = JwtClaimTypes.Name;
});
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)


{
// …
app.UseAuthentication();
app.UseAuthorization();
// …
}

A configuração acima define as informações do SSO em AddIdentityServerAuthentication. E


especifica que a API usará um Bearer token para validar as chamadas em AddAuthentication.

Pronto! Sua API ASP.NET Core 3.1 está integrada com um servidor OAuth 2.0.
O CONCEITO
O OAuth 2.0 é um framework de autorização. Dá recursos aos usuários para autorizar o acesso de
aplicativos de terceiros (Clients). O aplicativo terceiro, pode ser tanto um app da sua própria
empresa, como de outra empresa.
Quando autorizado, o aplicativo recebe um Bearer token. Atualmente o formato de Bearer mais
utilizado é o JWT. Que serve como credencial de autenticação.
Isso tem dois principais benefícios de segurança:
1. O aplicativo não precisa armazenar o nome de usuário e senha do usuário.
2. O OAuth2 provê recursos para restringir o escopo desse Bearer, por exemplo: acesso
somente leitura.
Esses benefícios são particularmente importantes para garantir a segurança dos aplicativos na
Web, tornando o OAuth 2 padrão predominante para autenticação de API.

O FLUXO

O OAuth 2.0 especifica o seguinte fluxo para validar um Token Bearer emitido por um Auth Server :

1. API irá receber um Bearer token através do Header Authorization


2. A API inicialmente faz validações locais básicas no Bearer enviado.
3. Em seguida faz um post no endpoint /connect/introspect.
4. O Auth Server válida se o Token é válido. Se estiver válido a requisição é atendida.

Você também pode gostar