Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Por Mike Rousos
A autenticação é o processo de determinar a identidade de um usuário. A autorização é o processo de determinar se um utilizador tem acesso a um recurso. No ASP.NET Core, a autenticação é gerida pelo serviço de autenticação, IAuthenticationServiceque é utilizado pelo middleware de autenticação. O serviço de autenticação usa manipuladores de autenticação registrados para concluir ações relacionadas à autenticação. Exemplos de ações relacionadas com autenticação incluem:
- Autenticar um utilizador.
- Responder quando um utilizador não autenticado tenta aceder a um recurso restrito.
Os handlers de autenticação registados e as suas opções de configuração são chamados de "esquemas".
Os esquemas de autenticação são especificados através do registo dos serviços de autenticação em Program.cs:
- Ao chamar um método de extensão específico do esquema após uma chamada para AddAuthentication, como AddJwtBearer ou AddCookie. Estes métodos de extensão usam AuthenticationBuilder.AddScheme para registar esquemas com configurações apropriadas.
- Menos frequentemente, chamando
AuthenticationBuilder.AddSchemediretamente.
Por exemplo, o seguinte código regista serviços de autenticação e manipuladores para os esquemas de autenticação "cookie" e "JWT Bearer":
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("CookieSettings", options));
O AddAuthentication parâmetro JwtBearerDefaults.AuthenticationScheme é o nome do esquema a usar como padrão quando um esquema específico não é solicitado.
Se forem usados múltiplos esquemas, as políticas de autorização (ou atributos de autorização) podem especificar o esquema de autenticação (ou esquemas) de que dependem para autenticar o utilizador. No exemplo acima, o esquema de autenticação cookie pode ser usado ao especificar o seu nome CookieAuthenticationDefaults.AuthenticationScheme (por padrão, embora seja possível fornecer um nome diferente ao invocar AddCookie).
Em alguns casos, a chamada a AddAuthentication é feita automaticamente por outros métodos de extensão. Por exemplo, ao usar ASP.NET Core Identity, AddAuthentication é chamado internamente.
O middleware de autenticação é adicionado em Program.cs ao chamar UseAuthentication. A chamada UseAuthentication regista o middleware que utiliza os esquemas de autenticação previamente registados. Chame UseAuthentication antes de qualquer middleware que dependa de utilizadores autenticados.
Conceitos de autenticação
A autenticação é responsável por fornecer o ClaimsPrincipal para autorização, a fim de tomar decisões sobre permissões. Existem múltiplas abordagens de esquemas de autenticação para selecionar qual o handler de autenticação responsável por gerar o conjunto correto de reivindicações:
- Esquema de autenticação
- O esquema de autenticação padrão, discutido nas duas secções seguintes.
- Defina diretamente HttpContext.User.
Quando existe apenas um único esquema de autenticação registado, este torna-se o esquema padrão. Se vários esquemas forem registados e o esquema padrão não for especificado, um esquema deve ser especificado no atributo authorize, caso contrário, é lançado o seguinte erro:
InvalidOperationException: Não foi especificado nenhum Schema de Autenticação e não foi encontrado o Schema DefaultAuthenticate. Os esquemas padrão podem ser definidos usando AddAuthentication(string defaultScheme) ou AddAuthentication(Action<AuthenticationOptions> , configureOptions).
DefaultScheme
Quando existe apenas um único esquema de autenticação registado, ele:
- É automaticamente usado como o DefaultScheme.
- Elimina a necessidade de especificar o
DefaultSchemeem AddAuthentication(IServiceCollection) ou AddAuthenticationCore(IServiceCollection).
Para desativar automaticamente usando o único esquema de autenticação como o DefaultScheme, chama AppContext.SetSwitch("Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme").
Esquema de autenticação
O esquema de autenticação pode selecionar qual o handler de autenticação responsável por gerar o conjunto correto de reivindicações. Para mais informações, consulte Autorizar com um esquema específico.
Um esquema de autenticação é um nome que corresponde a:
- Um gestor de autenticação.
- Opções para configurar essa instância específica do handler.
Os esquemas são úteis como mecanismo para referir os comportamentos de autenticação, desafio e proibição do manipulador associado. Por exemplo, uma política de autorização pode usar nomes de esquemas para especificar qual (ou esquemas) de autenticação devem ser usados para autenticar o utilizador. Ao configurar a autenticação, é comum especificar o esquema de autenticação predefinido. O esquema padrão é usado a menos que um recurso solicite um esquema específico. Também é possível:
- Especifique diferentes esquemas padrão para autenticar, desafiar e proibir ações.
- Combinar vários esquemas num só usando esquemas de políticas.
Manipulador de autenticação
Um manipulador de autenticação:
- É um tipo que implementa o comportamento de um esquema.
- É derivado de IAuthenticationHandler ou AuthenticationHandler<TOptions>.
- Tem a responsabilidade principal de autenticar os utilizadores.
Com base na configuração do esquema de autenticação e no contexto do pedido recebido, os manipuladores de autenticação:
- Construir AuthenticationTicket objetos que representem a identidade do utilizador se a autenticação for bem-sucedida.
- Devolva 'sem resultado' ou 'falha' se a autenticação não for bem-sucedida.
- Ter métodos para desafiar e proibir ações quando os utilizadores tentam aceder a recursos:
- Eles não têm autorização para aceder (proíbe).
- Quando não estão autenticados (desafio).
RemoteAuthenticationHandler<TOptions> vs AuthenticationHandler<TOptions>
RemoteAuthenticationHandler<TOptions> é a classe para autenticação que requer um passo de autenticação remota. Quando o passo de autenticação remota termina, o handler faz uma chamada de retorno para o CallbackPath definido pelo próprio handler. O handler termina o passo de autenticação usando a informação passada para o HandleRemoteAuthenticateAsync caminho de callback.
O OAuth 2.0 e o OIDC usam ambos este padrão. O JWT e os cookies não o fazem, pois podem usar diretamente o cabeçalho de autorização e o cookie para autenticação. O fornecedor hospedado remotamente neste caso:
- É o fornecedor de autenticação.
- Exemplos incluem Facebook, Twitter, Google, Microsoft e qualquer outro fornecedor OIDC que gere a autenticação dos utilizadores através do mecanismo dos handlers.
Authenticate
A ação de autenticação de um esquema de autenticação é responsável por construir a identidade do utilizador com base no contexto do pedido. Retorna um AuthenticateResult que indica se a autenticação foi bem-sucedida e, em caso de sucesso, a identidade do utilizador num ticket de autenticação. Consulte AuthenticateAsync. Exemplos autenticados incluem:
- Um esquema de autenticação que constrói a identidade do utilizador a partir de cookie cookies.
- Um esquema portador JWT que desserializa e valida um token portador JWT para construir a identidade do utilizador.
Desafio
Um desafio de autenticação é invocado pela Autorização quando um utilizador não autenticado solicita um endpoint que requer autenticação. É emitido um desafio de autenticação, por exemplo, quando um utilizador anónimo solicita um recurso restrito ou segue um link de login. A autorização invoca um desafio usando o(s) esquema(s) de autenticação especificado(s), ou o padrão se não for especificado nenhum. Consulte ChallengeAsync. Exemplos de desafios de autenticação incluem:
- Um cookie esquema de autenticação que redireciona o utilizador para uma página de login.
- Um esquema de portador JWT que devolve um resultado 401 com um cabeçalho
www-authenticate: bearer.
Uma ação de desafio deve informar o utilizador sobre qual o mecanismo de autenticação a usar para aceder ao recurso solicitado.
Proibir
A ação de proibição de um esquema de autenticação é chamada por Autorização quando um utilizador autenticado tenta aceder a um recurso ao qual não tem permissão para aceder. Consulte ForbidAsync. Exemplos de proibição de autenticação incluem:
- Um esquema de autenticação que redireciona o utilizador para uma página indicando que o acesso está proibido.
- Um esquema bearer JWT que devolve um código de status HTTP 403.
- Um esquema de autenticação personalizado que redireciona para uma página onde o utilizador pode solicitar acesso ao recurso.
Uma ação proibida pode informar o utilizador:
- Estão autenticados.
- Não lhes é permitido aceder ao recurso solicitado.
Consulte os seguintes links para as diferenças entre desafiar e proibir:
Fornecedores de autenticação por inquilino
ASP.NET Core não tem uma solução incorporada para autenticação multi-inquilino. Embora seja possível que os clientes escrevam um usando as funcionalidades integradas, recomendamos que considerem o Orchard Core, ABP Framework ou Finbuckle.MultiTenant para autenticação multi-inquilino.
Orchard Core é:
- Um framework de aplicações de código aberto, modular e multi-inquilino construído com ASP.NET Core.
- Um sistema de gestão de conteúdos (CMS) construído sobre essa estrutura de aplicações.
Consulte o código-fonte do Orchard Core para um exemplo de fornecedores de autenticação por inquilino.
O ABP Framework suporta vários padrões arquitetónicos, incluindo modularidade, microserviços, design orientado ao domínio e multi-inquilino. Consulte o código-fonte do Framework ABP no GitHub.
Finbuckle.MultiInquilino:
- Código aberto
- Proporciona resolução de inquilinos
- Leve
- Fornece isolamento de dados
- Configure o comportamento da aplicação de forma única para cada inquilino
Recursos adicionais
Por Mike Rousos
A autenticação é o processo de determinar a identidade de um usuário. A autorização é o processo de determinar se um utilizador tem acesso a um recurso. No ASP.NET Core, a autenticação é gerida pelo serviço de autenticação, IAuthenticationServiceque é utilizado pelo middleware de autenticação. O serviço de autenticação usa manipuladores de autenticação registrados para concluir ações relacionadas à autenticação. Exemplos de ações relacionadas com autenticação incluem:
- Autenticar um utilizador.
- Responder quando um utilizador não autenticado tenta aceder a um recurso restrito.
Os handlers de autenticação registados e as suas opções de configuração são chamados de "esquemas".
Os esquemas de autenticação são especificados através do registo dos serviços de autenticação em Program.cs:
- Ao chamar um método de extensão específico do esquema após uma chamada para AddAuthentication, como AddJwtBearer ou AddCookie. Estes métodos de extensão usam AuthenticationBuilder.AddScheme para registar esquemas com configurações apropriadas.
- Menos frequentemente, chamando
AuthenticationBuilder.AddSchemediretamente.
Por exemplo, o seguinte código regista serviços de autenticação e manipuladores para os esquemas de autenticação "cookie" e "JWT Bearer":
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("CookieSettings", options));
O AddAuthentication parâmetro JwtBearerDefaults.AuthenticationScheme é o nome do esquema a usar como padrão quando um esquema específico não é solicitado.
Se forem usados múltiplos esquemas, as políticas de autorização (ou atributos de autorização) podem especificar o esquema de autenticação (ou esquemas) de que dependem para autenticar o utilizador. No exemplo acima, o esquema de autenticação cookie pode ser usado ao especificar o seu nome CookieAuthenticationDefaults.AuthenticationScheme (por padrão, embora seja possível fornecer um nome diferente ao invocar AddCookie).
Em alguns casos, a chamada a AddAuthentication é feita automaticamente por outros métodos de extensão. Por exemplo, ao usar ASP.NET Core Identity, AddAuthentication é chamado internamente.
O middleware de autenticação é adicionado em Program.cs ao chamar UseAuthentication. A chamada UseAuthentication regista o middleware que utiliza os esquemas de autenticação previamente registados. Chame UseAuthentication antes de qualquer middleware que dependa de utilizadores autenticados.
Conceitos de autenticação
A autenticação é responsável por fornecer o ClaimsPrincipal para autorização, a fim de tomar decisões sobre permissões. Existem múltiplas abordagens de esquemas de autenticação para selecionar qual o handler de autenticação responsável por gerar o conjunto correto de reivindicações:
- Esquema de autenticação
- O esquema de autenticação padrão, discutido na secção seguinte.
- Defina diretamente HttpContext.User.
Não há verificação automática de esquemas. Se o esquema padrão não for especificado, o esquema deve ser especificado no atributo authorize, caso contrário, é lançado o seguinte erro:
InvalidOperationException: Não foi especificado nenhum Schema de Autenticação e não foi encontrado o Schema DefaultAuthenticate. Os esquemas padrão podem ser definidos usando AddAuthentication(string defaultScheme) ou AddAuthentication(Action<AuthenticationOptions> , configureOptions).
Esquema de autenticação
O esquema de autenticação pode selecionar qual o handler de autenticação responsável por gerar o conjunto correto de reivindicações. Para mais informações, consulte Autorizar com um esquema específico.
Um esquema de autenticação é um nome que corresponde a:
- Um gestor de autenticação.
- Opções para configurar essa instância específica do handler.
Os esquemas são úteis como mecanismo para referir os comportamentos de autenticação, desafio e proibição do manipulador associado. Por exemplo, uma política de autorização pode usar nomes de esquemas para especificar qual (ou esquemas) de autenticação devem ser usados para autenticar o utilizador. Ao configurar a autenticação, é comum especificar o esquema de autenticação predefinido. O esquema padrão é usado a menos que um recurso solicite um esquema específico. Também é possível:
- Especifique diferentes esquemas padrão para autenticar, desafiar e proibir ações.
- Combinar vários esquemas num só usando esquemas de políticas.
Manipulador de autenticação
Um manipulador de autenticação:
- É um tipo que implementa o comportamento de um esquema.
- É derivado de IAuthenticationHandler ou AuthenticationHandler<TOptions>.
- Tem a responsabilidade principal de autenticar os utilizadores.
Com base na configuração do esquema de autenticação e no contexto do pedido recebido, os manipuladores de autenticação:
- Construir AuthenticationTicket objetos que representem a identidade do utilizador se a autenticação for bem-sucedida.
- Devolva 'sem resultado' ou 'falha' se a autenticação não for bem-sucedida.
- Ter métodos para desafiar e proibir ações quando os utilizadores tentam aceder a recursos:
- Eles não têm autorização para aceder (proíbe).
- Quando não estão autenticados (desafio).
RemoteAuthenticationHandler<TOptions> vs AuthenticationHandler<TOptions>
RemoteAuthenticationHandler<TOptions> é a classe para autenticação que requer um passo de autenticação remota. Quando o passo de autenticação remota termina, o handler faz uma chamada de retorno para o CallbackPath definido pelo próprio handler. O handler termina o passo de autenticação usando a informação passada para o HandleRemoteAuthenticateAsync caminho de callback.
O OAuth 2.0 e o OIDC usam ambos este padrão. O JWT e os cookies não o fazem, pois podem usar diretamente o cabeçalho de autorização e o cookie para autenticação. O fornecedor hospedado remotamente neste caso:
- É o fornecedor de autenticação.
- Exemplos incluem Facebook, Twitter, Google, Microsoft e qualquer outro fornecedor OIDC que gere a autenticação dos utilizadores através do mecanismo dos handlers.
Authenticate
A ação de autenticação de um esquema de autenticação é responsável por construir a identidade do utilizador com base no contexto do pedido. Retorna um AuthenticateResult que indica se a autenticação foi bem-sucedida e, em caso de sucesso, a identidade do utilizador num ticket de autenticação. Consulte AuthenticateAsync. Exemplos autenticados incluem:
- Um esquema de autenticação que constrói a identidade do utilizador a partir de cookie cookies.
- Um esquema portador JWT que desserializa e valida um token portador JWT para construir a identidade do utilizador.
Desafio
Um desafio de autenticação é invocado pela Autorização quando um utilizador não autenticado solicita um endpoint que requer autenticação. É emitido um desafio de autenticação, por exemplo, quando um utilizador anónimo solicita um recurso restrito ou segue um link de login. A autorização invoca um desafio usando o(s) esquema(s) de autenticação especificado(s), ou o padrão se não for especificado nenhum. Consulte ChallengeAsync. Exemplos de desafios de autenticação incluem:
- Um cookie esquema de autenticação que redireciona o utilizador para uma página de login.
- Um esquema de portador JWT que devolve um resultado 401 com um cabeçalho
www-authenticate: bearer.
Uma ação de desafio deve informar o utilizador sobre qual o mecanismo de autenticação a usar para aceder ao recurso solicitado.
Proibir
A ação de proibição de um esquema de autenticação é chamada por Autorização quando um utilizador autenticado tenta aceder a um recurso ao qual não tem permissão para aceder. Consulte ForbidAsync. Exemplos de proibição de autenticação incluem:
- Um esquema de autenticação que redireciona o utilizador para uma página indicando que o acesso está proibido.
- Um esquema bearer JWT que devolve um código de status HTTP 403.
- Um esquema de autenticação personalizado que redireciona para uma página onde o utilizador pode solicitar acesso ao recurso.
Uma ação proibida pode informar o utilizador:
- Estão autenticados.
- Não lhes é permitido aceder ao recurso solicitado.
Consulte os seguintes links para as diferenças entre desafiar e proibir:
Fornecedores de autenticação por inquilino
ASP.NET Core não tem uma solução incorporada para autenticação multi-inquilino. Embora seja possível que os clientes escrevam um usando as funcionalidades integradas, recomendamos que considerem o Orchard Core ou o ABP Framework para autenticação multi-inquilino.
Orchard Core é:
- Um framework de aplicações de código aberto, modular e multi-inquilino construído com ASP.NET Core.
- Um sistema de gestão de conteúdos (CMS) construído sobre essa estrutura de aplicações.
Consulte o código-fonte do Orchard Core para um exemplo de fornecedores de autenticação por inquilino.
O ABP Framework suporta vários padrões arquitetónicos, incluindo modularidade, microserviços, design orientado ao domínio e multi-inquilino. Consulte o código-fonte do Framework ABP no GitHub.
Recursos adicionais
Por Mike Rousos
A autenticação é o processo de determinar a identidade de um usuário. A autorização é o processo de determinar se um utilizador tem acesso a um recurso. No ASP.NET Core, a autenticação é gerida pelo serviço de autenticação, IAuthenticationServiceque é utilizado pelo middleware de autenticação. O serviço de autenticação usa manipuladores de autenticação registrados para concluir ações relacionadas à autenticação. Exemplos de ações relacionadas com autenticação incluem:
- Autenticar um utilizador.
- Responder quando um utilizador não autenticado tenta aceder a um recurso restrito.
Os handlers de autenticação registados e as suas opções de configuração são chamados de "esquemas".
Os esquemas de autenticação são especificados através do registo dos serviços de autenticação em Startup.ConfigureServices:
- Chamando um método de extensão específico do esquema após uma chamada para AddAuthentication (como AddJwtBearer ou AddCookie, por exemplo). Estes métodos de extensão usam AuthenticationBuilder.AddScheme para registar esquemas com configurações apropriadas.
- Menos frequentemente, chamando
AuthenticationBuilder.AddSchemediretamente.
Por exemplo, o seguinte código regista serviços de autenticação e manipuladores para os esquemas de autenticação "cookie" e "JWT Bearer":
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => Configuration.Bind("CookieSettings", options));
O AddAuthentication parâmetro JwtBearerDefaults.AuthenticationScheme é o nome do esquema a usar como padrão quando um esquema específico não é solicitado.
Se forem usados múltiplos esquemas, as políticas de autorização (ou atributos de autorização) podem especificar o esquema de autenticação (ou esquemas) de que dependem para autenticar o utilizador. No exemplo acima, o esquema de autenticação cookie pode ser usado ao especificar o seu nome CookieAuthenticationDefaults.AuthenticationScheme (por padrão, embora seja possível fornecer um nome diferente ao invocar AddCookie).
Em alguns casos, a chamada a AddAuthentication é feita automaticamente por outros métodos de extensão. Por exemplo, ao usar ASP.NET Core Identity, AddAuthentication é chamado internamente.
O middleware de autenticação é adicionado em Startup.Configure ao chamar UseAuthentication. A chamada UseAuthentication regista o middleware que utiliza os esquemas de autenticação previamente registados. Chame UseAuthentication antes de qualquer middleware que dependa de utilizadores autenticados. Ao usar o encaminhamento de endpoint, a chamada para UseAuthentication deve ser:
- Após UseRouting, para que a informação da rota esteja disponível para decisões de autenticação.
- Antes de UseEndpoints, para que os utilizadores sejam autenticados antes de aceder aos endpoints.
Conceitos de autenticação
A autenticação é responsável por fornecer o ClaimsPrincipal para autorização, a fim de tomar decisões sobre permissões. Existem múltiplas abordagens de esquemas de autenticação para selecionar qual o handler de autenticação responsável por gerar o conjunto correto de reivindicações:
- Esquema de autenticação
- O esquema de autenticação padrão, discutido na secção seguinte.
- Defina diretamente HttpContext.User.
Não há verificação automática de esquemas. Se o esquema padrão não for especificado, o esquema deve ser especificado no atributo authorize, caso contrário, é lançado o seguinte erro:
InvalidOperationException: Não foi especificado nenhum Schema de Autenticação e não foi encontrado o Schema DefaultAuthenticate. Os esquemas padrão podem ser definidos usando AddAuthentication(string defaultScheme) ou AddAuthentication(Action<AuthenticationOptions> , configureOptions).
Esquema de autenticação
O esquema de autenticação pode selecionar qual o handler de autenticação responsável por gerar o conjunto correto de reivindicações. Para mais informações, consulte Autorizar com um esquema específico.
Um esquema de autenticação é um nome que corresponde a:
- Um gestor de autenticação.
- Opções para configurar essa instância específica do handler.
Os esquemas são úteis como mecanismo para referir os comportamentos de autenticação, desafio e proibição do manipulador associado. Por exemplo, uma política de autorização pode usar nomes de esquemas para especificar qual (ou esquemas) de autenticação devem ser usados para autenticar o utilizador. Ao configurar a autenticação, é comum especificar o esquema de autenticação predefinido. O esquema padrão é usado a menos que um recurso solicite um esquema específico. Também é possível:
- Especifique diferentes esquemas padrão para autenticar, desafiar e proibir ações.
- Combinar vários esquemas num só usando esquemas de políticas.
Manipulador de autenticação
Um manipulador de autenticação:
- É um tipo que implementa o comportamento de um esquema.
- É derivado de IAuthenticationHandler ou AuthenticationHandler<TOptions>.
- Tem a responsabilidade principal de autenticar os utilizadores.
Com base na configuração do esquema de autenticação e no contexto do pedido recebido, os manipuladores de autenticação:
- Construir AuthenticationTicket objetos que representem a identidade do utilizador se a autenticação for bem-sucedida.
- Devolva 'sem resultado' ou 'falha' se a autenticação não for bem-sucedida.
- Ter métodos para desafiar e proibir ações quando os utilizadores tentam aceder a recursos:
- Eles não têm autorização para aceder (proíbe).
- Quando não estão autenticados (desafio).
RemoteAuthenticationHandler<TOptions> vs AuthenticationHandler<TOptions>
RemoteAuthenticationHandler<TOptions> é a classe para autenticação que requer um passo de autenticação remota. Quando o passo de autenticação remota termina, o handler faz uma chamada de retorno para o CallbackPath definido pelo próprio handler. O handler termina o passo de autenticação usando a informação passada para o HandleRemoteAuthenticateAsync caminho de callback.
O OAuth 2.0 e o OIDC usam ambos este padrão. O JWT e os cookies não o fazem, pois podem usar diretamente o cabeçalho de autorização e o cookie para autenticação. O fornecedor hospedado remotamente neste caso:
- É o fornecedor de autenticação.
- Exemplos incluem Facebook, Twitter, Google, Microsoft e qualquer outro fornecedor OIDC que gere a autenticação dos utilizadores através do mecanismo dos handlers.
Authenticate
A ação de autenticação de um esquema de autenticação é responsável por construir a identidade do utilizador com base no contexto do pedido. Retorna um AuthenticateResult que indica se a autenticação foi bem-sucedida e, em caso de sucesso, a identidade do utilizador num ticket de autenticação. Consulte AuthenticateAsync. Exemplos autenticados incluem:
- Um esquema de autenticação que constrói a identidade do utilizador a partir de cookie cookies.
- Um esquema portador JWT que desserializa e valida um token portador JWT para construir a identidade do utilizador.
Desafio
Um desafio de autenticação é invocado pela Autorização quando um utilizador não autenticado solicita um endpoint que requer autenticação. É emitido um desafio de autenticação, por exemplo, quando um utilizador anónimo solicita um recurso restrito ou segue um link de login. A autorização invoca um desafio usando o(s) esquema(s) de autenticação especificado(s), ou o padrão se não for especificado nenhum. Consulte ChallengeAsync. Exemplos de desafios de autenticação incluem:
- Um cookie esquema de autenticação que redireciona o utilizador para uma página de login.
- Um esquema de portador JWT que devolve um resultado 401 com um cabeçalho
www-authenticate: bearer.
Uma ação de desafio deve informar o utilizador sobre qual o mecanismo de autenticação a usar para aceder ao recurso solicitado.
Proibir
A ação de proibição de um esquema de autenticação é chamada por Autorização quando um utilizador autenticado tenta aceder a um recurso ao qual não tem permissão para aceder. Consulte ForbidAsync. Exemplos de proibição de autenticação incluem:
- Um esquema de autenticação que redireciona o utilizador para uma página indicando que o acesso está proibido.
- Um esquema bearer JWT que devolve um código de status HTTP 403.
- Um esquema de autenticação personalizado que redireciona para uma página onde o utilizador pode solicitar acesso ao recurso.
Uma ação proibida pode informar o utilizador:
- Estão autenticados.
- Não lhes é permitido aceder ao recurso solicitado.
Consulte os seguintes links para as diferenças entre desafiar e proibir:
Fornecedores de autenticação por inquilino
O framework ASP.NET Core não tem uma solução integrada para autenticação multitenant. Embora seja possível para os clientes escreverem uma aplicação com autenticação multi-inquilino, recomendamos a utilização de um dos seguintes frameworks asp.net principais que suportam autenticação multi-inquilino:
Orchard Core
Orchard Core. Consulte o código-fonte do Orchard Core para um exemplo de fornecedores de autenticação por inquilino.
Quadro ABP
O ABP Framework suporta vários padrões arquitetónicos, incluindo modularidade, microserviços, design orientado ao domínio e multi-inquilino. Consulte o código-fonte do Framework ABP no GitHub.