Eventos
Junte-se a nós na FabCon Vegas
31 de mar., 23 - 2 de abr., 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registre-se hoje mesmoNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Por Mike Rousos
Autenticação é o processo de determinar a identity de um usuário. Autorização é o processo de determinar se um usuário tem acesso a um recurso. No ASP.NET Core, a autenticação é tratada pelo serviço de autenticação, IAuthenticationService, que é usado pelo middleware de autenticação. O serviço de autenticação usa manipuladores de autenticação registrados para realizar ações relacionadas à autenticação. Exemplos de ações relacionadas à autenticação incluem:
Os manipuladores de autenticação registrados e suas opções de configuração são chamados de "esquemas".
Os esquemas de autenticação são especificados registrando serviços de autenticação em Program.cs
:
AuthenticationBuilder.AddScheme
diretamente.Por exemplo, o seguinte código registra serviços de autenticação e manipuladores para cookie e esquemas de autenticação de portador JWT:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("CookieSettings", options));
O parâmetro AddAuthentication
JwtBearerDefaults.AuthenticationScheme é o nome do esquema a ser usado por padrão quando um esquema específico não é solicitado.
Se vários esquemas forem usados, políticas de autorização (ou atributos de autorização) poderão especificar o esquema de autenticação (ou esquemas) de que dependem para autenticar o usuário. No exemplo acima, o esquema de autenticação cookie pode ser usado especificando seu nome (CookieAuthenticationDefaults.AuthenticationScheme por padrão, embora um nome diferente possa ser fornecido ao chamar AddCookie
).
Em alguns casos, a chamada para AddAuthentication
é feita automaticamente por outros métodos de extensão. Por exemplo, ao usar o ASP.NET CoreIdentity, AddAuthentication
é chamado internamente.
O middleware de Autenticação é adicionado em Program.cs
chamando UseAuthentication. Chamar UseAuthentication
registra o middleware que usa os esquemas de autenticação registrado anteriormente. Chame UseAuthentication
antes de qualquer middleware que dependa de usuários serem autenticados.
A autenticação é responsável por fornecer o ClaimsPrincipal autorização para tomar decisões de permissão. Há várias abordagens de esquema de autenticação para selecionar qual manipulador de autenticação é responsável por gerar o conjunto correto de declarações:
Quando houver apenas um único esquema de autenticação registrado, ele se torna o esquema padrão. Se vários esquemas forem registrados e o esquema padrão não for especificado, um esquema deverá ser especificado no atributo de autorização, caso contrário, o seguinte erro será gerado:
InvalidOperationException: nenhum authenticationScheme foi especificado e não foi encontrado nenhum DefaultAuthenticateScheme. Os esquemas padrão podem ser definidos usando AddAuthentication(string defaultScheme) ou AddAuthentication(Action<AuthenticationOptions> configureOptions).
Quando houver apenas um único esquema de autenticação registrado, o esquema de autenticação única:
DefaultScheme
em AddAuthentication(IServiceCollection) ou AddAuthenticationCore(IServiceCollection).Para desabilitar automaticamente o uso do esquema de autenticação única como o DefaultScheme
, chame AppContext.SetSwitch("Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme")
.
O esquema de autenticação pode selecionar qual manipulador de autenticação é responsável por gerar o conjunto correto de declarações. Para obter mais informações, consulte Autorizar com um esquema específico.
Um esquema de autenticação é um nome que corresponde a:
Os esquemas são úteis como um mecanismo para fazer referência à autenticação, ao desafio e à proibição de comportamentos do manipulador associado. Por exemplo, uma política de autorização pode usar nomes de esquema para especificar qual esquema de autenticação (ou esquemas) deve ser usado para autenticar o usuário. Ao configurar a autenticação, é comum especificar o esquema de autenticação padrão. O esquema padrão é usado, a menos que um recurso solicite um esquema específico. Também é possível:
Um manipulador de autenticação:
Com base na configuração do esquema de autenticação e no contexto da solicitação de entrada, os manipuladores de autenticação:
RemoteAuthenticationHandler<TOptions> é a classe para autenticação que requer uma etapa de autenticação remota. Quando a etapa de autenticação remota for concluída, o manipulador retornará ao CallbackPath
definido pelo manipulador. O manipulador conclui a etapa de autenticação usando as informações passadas para o caminho do retorno de chamada HandleRemoteAuthenticateAsync. OAuth 2.0 e OIDC usam esse padrão. JWT e cookies não, pois podem usar diretamente o cabeçalho do portador e cookie para autenticar. O provedor hospedado remotamente neste caso:
A ação de autenticação de um esquema de autenticação é responsável por construir a identity do usuário com base no contexto de solicitação. Ela retorna um AuthenticateResult que indica se a autenticação foi bem-sucedida e, nesse caso, a identity do usuário em um tíquete de autenticação. Consulte AuthenticateAsync. Exemplos de autenticação incluem:
Um desafio de autenticação é invocado pela Autorização quando um usuário não autenticado solicita um ponto de extremidade que requer autenticação. Um desafio de autenticação é emitido, por exemplo, quando um usuário anônimo solicita um recurso restrito ou segue um link de logon. A autorização invoca um desafio usando os esquemas de autenticação especificados ou o padrão se nenhum for especificado. Consulte ChallengeAsync. Exemplos de desafio de autenticação incluem:
www-authenticate: bearer
.Uma ação de desafio deve informar ao usuário qual mecanismo de autenticação usar para acessar o recurso solicitado.
A ação de proibição de um esquema de autenticação é chamada pela Autorização quando um usuário autenticado tenta acessar um recurso que não tem permissão para acessar. Consulte ForbidAsync. Exemplos de proibição de autenticação incluem:
Uma ação de proibição pode informar ao usuário:
Consulte os seguintes links para conhecer as diferenças entre desafio e proibição:
O ASP.NET Core não tem uma solução interna para autenticação multilocatário. Embora seja possível que os clientes escrevam uma usando os recursos internos, recomendamos que considerem Orchard Core, ABP Framework ou Finbuckle.MultiTenant para autenticação multilocatário.
O Orchard Core é:
Consulte a fonte Orchard Core para obter um exemplo de provedores de autenticação por locatário.
O ABP Framework dá suporte a vários padrões de arquitetura, incluindo modularidade, microsserviços, design controlado por domínio e multilocatário. Consulte Origem do ABP Framework no GitHub.
Finbuckle.MultiTenant:
Por Mike Rousos
Autenticação é o processo de determinar a identity de um usuário. Autorização é o processo de determinar se um usuário tem acesso a um recurso. No ASP.NET Core, a autenticação é tratada pelo serviço de autenticação, IAuthenticationService, que é usado pelo middleware de autenticação. O serviço de autenticação usa manipuladores de autenticação registrados para realizar ações relacionadas à autenticação. Exemplos de ações relacionadas à autenticação incluem:
Os manipuladores de autenticação registrados e suas opções de configuração são chamados de "esquemas".
Os esquemas de autenticação são especificados registrando serviços de autenticação em Program.cs
:
AuthenticationBuilder.AddScheme
diretamente.Por exemplo, o seguinte código registra serviços de autenticação e manipuladores para cookie e esquemas de autenticação de portador JWT:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("CookieSettings", options));
O parâmetro AddAuthentication
JwtBearerDefaults.AuthenticationScheme é o nome do esquema a ser usado por padrão quando um esquema específico não é solicitado.
Se vários esquemas forem usados, políticas de autorização (ou atributos de autorização) poderão especificar o esquema de autenticação (ou esquemas) de que dependem para autenticar o usuário. No exemplo acima, o esquema de autenticação cookie pode ser usado especificando seu nome (CookieAuthenticationDefaults.AuthenticationScheme por padrão, embora um nome diferente possa ser fornecido ao chamar AddCookie
).
Em alguns casos, a chamada para AddAuthentication
é feita automaticamente por outros métodos de extensão. Por exemplo, ao usar o ASP.NET CoreIdentity, AddAuthentication
é chamado internamente.
O middleware de Autenticação é adicionado em Program.cs
chamando UseAuthentication. Chamar UseAuthentication
registra o middleware que usa os esquemas de autenticação registrado anteriormente. Chame UseAuthentication
antes de qualquer middleware que dependa de usuários serem autenticados.
A autenticação é responsável por fornecer o ClaimsPrincipal autorização para tomar decisões de permissão. Há várias abordagens de esquema de autenticação para selecionar qual manipulador de autenticação é responsável por gerar o conjunto correto de declarações:
Não há investigação automática de esquemas. Se o esquema padrão não for especificado, o esquema deverá ser especificado no atributo de autorização, caso contrário, o seguinte erro será gerado:
InvalidOperationException: nenhum authenticationScheme foi especificado e não foi encontrado nenhum DefaultAuthenticateScheme. Os esquemas padrão podem ser definidos usando AddAuthentication(string defaultScheme) ou AddAuthentication(Action<AuthenticationOptions> configureOptions).
O esquema de autenticação pode selecionar qual manipulador de autenticação é responsável por gerar o conjunto correto de declarações. Para obter mais informações, consulte Autorizar com um esquema específico.
Um esquema de autenticação é um nome que corresponde a:
Os esquemas são úteis como um mecanismo para fazer referência à autenticação, ao desafio e à proibição de comportamentos do manipulador associado. Por exemplo, uma política de autorização pode usar nomes de esquema para especificar qual esquema de autenticação (ou esquemas) deve ser usado para autenticar o usuário. Ao configurar a autenticação, é comum especificar o esquema de autenticação padrão. O esquema padrão é usado, a menos que um recurso solicite um esquema específico. Também é possível:
Um manipulador de autenticação:
Com base na configuração do esquema de autenticação e no contexto da solicitação de entrada, os manipuladores de autenticação:
RemoteAuthenticationHandler<TOptions> é a classe para autenticação que requer uma etapa de autenticação remota. Quando a etapa de autenticação remota for concluída, o manipulador retornará ao CallbackPath
definido pelo manipulador. O manipulador conclui a etapa de autenticação usando as informações passadas para o caminho do retorno de chamada HandleRemoteAuthenticateAsync. OAuth 2.0 e OIDC usam esse padrão. JWT e cookies não, pois podem usar diretamente o cabeçalho do portador e cookie para autenticar. O provedor hospedado remotamente neste caso:
A ação de autenticação de um esquema de autenticação é responsável por construir a identity do usuário com base no contexto de solicitação. Ela retorna um AuthenticateResult que indica se a autenticação foi bem-sucedida e, nesse caso, a identity do usuário em um tíquete de autenticação. Consulte AuthenticateAsync. Exemplos de autenticação incluem:
Um desafio de autenticação é invocado pela Autorização quando um usuário não autenticado solicita um ponto de extremidade que requer autenticação. Um desafio de autenticação é emitido, por exemplo, quando um usuário anônimo solicita um recurso restrito ou segue um link de logon. A autorização invoca um desafio usando os esquemas de autenticação especificados ou o padrão se nenhum for especificado. Consulte ChallengeAsync. Exemplos de desafio de autenticação incluem:
www-authenticate: bearer
.Uma ação de desafio deve informar ao usuário qual mecanismo de autenticação usar para acessar o recurso solicitado.
A ação de proibição de um esquema de autenticação é chamada pela Autorização quando um usuário autenticado tenta acessar um recurso que não tem permissão para acessar. Consulte ForbidAsync. Exemplos de proibição de autenticação incluem:
Uma ação de proibição pode informar ao usuário:
Consulte os seguintes links para conhecer as diferenças entre desafio e proibição:
O ASP.NET Core não tem uma solução interna para autenticação multilocatário. Embora seja possível que os clientes escrevam uma usando os recursos internos, recomendamos que considerem o Orchard Core ou o ABP Framework para autenticação multilocatário.
O Orchard Core é:
Consulte a fonte Orchard Core para obter um exemplo de provedores de autenticação por locatário.
O ABP Framework dá suporte a vários padrões de arquitetura, incluindo modularidade, microsserviços, design controlado por domínio e multilocatário. Consulte Origem do ABP Framework no GitHub.
Por Mike Rousos
Autenticação é o processo de determinar a identity de um usuário. Autorização é o processo de determinar se um usuário tem acesso a um recurso. No ASP.NET Core, a autenticação é tratada pelo serviço de autenticação, IAuthenticationService, que é usado pelo middleware de autenticação. O serviço de autenticação usa manipuladores de autenticação registrados para realizar ações relacionadas à autenticação. Exemplos de ações relacionadas à autenticação incluem:
Os manipuladores de autenticação registrados e suas opções de configuração são chamados de "esquemas".
Os esquemas de autenticação são especificados registrando serviços de autenticação em Startup.ConfigureServices
:
AuthenticationBuilder.AddScheme
diretamente.Por exemplo, o seguinte código registra serviços de autenticação e manipuladores para cookie e esquemas de autenticação de portador JWT:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => Configuration.Bind("CookieSettings", options));
O parâmetro AddAuthentication
JwtBearerDefaults.AuthenticationScheme é o nome do esquema a ser usado por padrão quando um esquema específico não é solicitado.
Se vários esquemas forem usados, políticas de autorização (ou atributos de autorização) poderão especificar o esquema de autenticação (ou esquemas) de que dependem para autenticar o usuário. No exemplo acima, o esquema de autenticação cookie pode ser usado especificando seu nome (CookieAuthenticationDefaults.AuthenticationScheme por padrão, embora um nome diferente possa ser fornecido ao chamar AddCookie
).
Em alguns casos, a chamada para AddAuthentication
é feita automaticamente por outros métodos de extensão. Por exemplo, ao usar o ASP.NET CoreIdentity, AddAuthentication
é chamado internamente.
O middleware de Autenticação é adicionado em Startup.Configure
chamando UseAuthentication. Chamar UseAuthentication
registra o middleware que usa os esquemas de autenticação registrado anteriormente. Chame UseAuthentication
antes de qualquer middleware que dependa de usuários serem autenticados. Ao usar o roteamento de ponto de extremidade, a chamada para UseAuthentication
deve ser executada:
A autenticação é responsável por fornecer o ClaimsPrincipal autorização para tomar decisões de permissão. Há várias abordagens de esquema de autenticação para selecionar qual manipulador de autenticação é responsável por gerar o conjunto correto de declarações:
Não há investigação automática de esquemas. Se o esquema padrão não for especificado, o esquema deverá ser especificado no atributo de autorização, caso contrário, o seguinte erro será gerado:
InvalidOperationException: nenhum authenticationScheme foi especificado e não foi encontrado nenhum DefaultAuthenticateScheme. Os esquemas padrão podem ser definidos usando AddAuthentication(string defaultScheme) ou AddAuthentication(Action<AuthenticationOptions> configureOptions).
O esquema de autenticação pode selecionar qual manipulador de autenticação é responsável por gerar o conjunto correto de declarações. Para obter mais informações, consulte Autorizar com um esquema específico.
Um esquema de autenticação é um nome que corresponde a:
Os esquemas são úteis como um mecanismo para fazer referência à autenticação, ao desafio e à proibição de comportamentos do manipulador associado. Por exemplo, uma política de autorização pode usar nomes de esquema para especificar qual esquema de autenticação (ou esquemas) deve ser usado para autenticar o usuário. Ao configurar a autenticação, é comum especificar o esquema de autenticação padrão. O esquema padrão é usado, a menos que um recurso solicite um esquema específico. Também é possível:
Um manipulador de autenticação:
Com base na configuração do esquema de autenticação e no contexto da solicitação de entrada, os manipuladores de autenticação:
RemoteAuthenticationHandler<TOptions> é a classe para autenticação que requer uma etapa de autenticação remota. Quando a etapa de autenticação remota for concluída, o manipulador retornará ao CallbackPath
definido pelo manipulador. O manipulador conclui a etapa de autenticação usando as informações passadas para o caminho do retorno de chamada HandleRemoteAuthenticateAsync. OAuth 2.0 e OIDC usam esse padrão. JWT e cookies não, pois podem usar diretamente o cabeçalho do portador e cookie para autenticar. O provedor hospedado remotamente neste caso:
A ação de autenticação de um esquema de autenticação é responsável por construir a identity do usuário com base no contexto de solicitação. Ela retorna um AuthenticateResult que indica se a autenticação foi bem-sucedida e, nesse caso, a identity do usuário em um tíquete de autenticação. Consulte AuthenticateAsync. Exemplos de autenticação incluem:
Um desafio de autenticação é invocado pela Autorização quando um usuário não autenticado solicita um ponto de extremidade que requer autenticação. Um desafio de autenticação é emitido, por exemplo, quando um usuário anônimo solicita um recurso restrito ou segue um link de logon. A autorização invoca um desafio usando os esquemas de autenticação especificados ou o padrão se nenhum for especificado. Consulte ChallengeAsync. Exemplos de desafio de autenticação incluem:
www-authenticate: bearer
.Uma ação de desafio deve informar ao usuário qual mecanismo de autenticação usar para acessar o recurso solicitado.
A ação de proibição de um esquema de autenticação é chamada pela Autorização quando um usuário autenticado tenta acessar um recurso que não tem permissão para acessar. Consulte ForbidAsync. Exemplos de proibição de autenticação incluem:
Uma ação de proibição pode informar ao usuário:
Consulte os seguintes links para conhecer as diferenças entre desafio e proibição:
A estrutura do ASP.NET Core não tem uma solução interna para autenticação multilocatário. Embora seja possível que os clientes escrevam um aplicativo com autenticação multilocatário, recomendamos usar uma das seguintes estruturas de aplicativos do ASP.NET Core que dão suporte à autenticação multilocatário:
Orchard Core. Consulte a fonte Orchard Core para obter um exemplo de provedores de autenticação por locatário.
O ABP Framework dá suporte a vários padrões de arquitetura, incluindo modularidade, microsserviços, design controlado por domínio e multilocatário. Consulte Origem do ABP Framework no GitHub.
Comentários do ASP.NET Core
O ASP.NET Core é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
Junte-se a nós na FabCon Vegas
31 de mar., 23 - 2 de abr., 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registre-se hoje mesmoTreinamento
Módulo
Proteger um aplicativo Web .NET com a estrutura de Identidade do ASP.NET Core - Training
Aprender a adicionar autenticação e autorização a um aplicativo Web .NET usando a estrutura ASP.NET Core Identity.
Certificação
Microsoft Certified: Identity and Access Administrator Associate - Certifications
Demonstrar os recursos do Microsoft Entra ID para modernizar as soluções de identidade, implementar soluções híbridas e implementar a governança de identidade.