Open Source Web Application Framework for ASP.NET Core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

7.9 KiB

Módulo IdentityServer

O módulo IdentityServer fornece uma integração completa com o framework IdentityServer4 (IDS), que oferece recursos avançados de autenticação, como logon único e controle de acesso a API. Este módulo persiste clientes, recursos e outros objetos relacionados ao IDS no banco de dados. Este módulo foi substituído pelo módulo OpenIddict após o ABP v6.0 nos modelos de inicialização.

Observação: Você não pode usar os módulos IdentityServer e OpenIddict juntos. Eles são bibliotecas separadas de provedor OpenID para a mesma função.

Como instalar

Você não precisa deste módulo quando estiver usando o módulo OpenIddict. No entanto, se você deseja continuar usando o IdentityServer4 para suas aplicações, você pode instalar este módulo e remover o módulo OpenIddict. Você pode continuar a usá-lo como pacote e obter atualizações facilmente, ou pode incluir seu código-fonte em sua solução (consulte o comando get-source CLI) para desenvolver seu módulo personalizado.

O código-fonte

O código-fonte deste módulo pode ser acessado aqui. O código-fonte é licenciado com MIT, então você pode usá-lo e personalizá-lo livremente.

Interface do usuário

Este módulo implementa a lógica de domínio e as integrações com o banco de dados, mas não fornece nenhuma interface do usuário. A interface de gerenciamento é útil se você precisar adicionar clientes e recursos dinamicamente. Nesse caso, você pode construir a interface de gerenciamento por conta própria ou considerar a compra do ABP Commercial, que fornece a interface de gerenciamento para este módulo.

Relações com outros módulos

Este módulo é baseado no módulo Identity e possui um pacote de integração com o módulo Account.

Opções

AbpIdentityServerBuilderOptions

AbpIdentityServerBuilderOptions pode ser configurado no método PreConfigureServices do seu módulo do Identity Server. Exemplo:

public override void PreConfigureServices(ServiceConfigurationContext context)
{
	PreConfigure<AbpIdentityServerBuilderOptions>(builder =>
	{
    	// Defina as opções aqui...		
	});
}

Propriedades de AbpIdentityServerBuilderOptions:

  • UpdateJwtSecurityTokenHandlerDefaultInboundClaimTypeMap (padrão: true): Atualiza JwtSecurityTokenHandler.DefaultInboundClaimTypeMap para ser compatível com as reivindicações do Identity Server.
  • UpdateAbpClaimTypes (padrão: true): Atualiza AbpClaimTypes para ser compatível com as reivindicações do Identity Server.
  • IntegrateToAspNetIdentity (padrão: true): Integra ao ASP.NET Identity.
  • AddDeveloperSigningCredential (padrão: true): Defina como false para suprimir a chamada AddDeveloperSigningCredential() no IIdentityServerBuilder.

IIdentityServerBuilder pode ser configurado no método PreConfigureServices do seu módulo do Identity Server. Exemplo:

public override void PreConfigureServices(ServiceConfigurationContext context)
{
	PreConfigure<IIdentityServerBuilder>(builder =>
	{
    	builder.AddSigningCredential(...);	
	});
}

Internos

Camada de Domínio

Agregados

ApiResource

Os recursos da API são necessários para permitir que os clientes solicitem tokens de acesso.

  • ApiResource (raiz do agregado): Representa um recurso da API no sistema.
    • ApiSecret (coleção): segredos do recurso da API.
    • ApiScope (coleção): escopos do recurso da API.
    • ApiResourceClaim (coleção): reivindicações do recurso da API.
Client

Os clientes representam aplicativos que podem solicitar tokens do seu Identity Server.

  • Client (raiz do agregado): Representa um aplicativo cliente do Identity Server.
    • ClientScope (coleção): Escopos do cliente.
    • ClientSecret (coleção): Segredos do cliente.
    • ClientGrantType (coleção): Tipos de concessão do cliente.
    • ClientCorsOrigin (coleção): Origens CORS do cliente.
    • ClientRedirectUri (coleção): URIs de redirecionamento do cliente.
    • ClientPostLogoutRedirectUri (coleção): URIs de redirecionamento de logout do cliente.
    • ClientIdPRestriction (coleção): Restrições de provedor do cliente.
    • ClientClaim (coleção): Reivindicações do cliente.
    • ClientProperty (coleção): Propriedades personalizadas do cliente.
PersistedGrant

Persisted Grants armazena AuthorizationCodes, RefreshTokens e UserConsent.

  • PersistedGrant (raiz do agregado): Representa um PersistedGrant para o servidor de identidade.
IdentityResource

Os recursos de identidade são dados como ID do usuário, nome ou endereço de e-mail de um usuário.

  • IdentityResource (raiz do agregado): Representa um recurso de identidade do Identity Server.
    • IdentityClaim (coleção): Reivindicações do recurso de identidade.

Repositórios

Os seguintes repositórios personalizados são definidos para este módulo:

  • IApiResourceRepository
  • IClientRepository
  • IPersistentGrantRepository
  • IIdentityResourceRepository

Serviços de Domínio

Este módulo não contém nenhum serviço de domínio, mas substitui os serviços abaixo;

  • AbpProfileService (Usado quando AbpIdentityServerBuilderOptions.IntegrateToAspNetIdentity é true)
  • AbpClaimsService
  • AbpCorsPolicyService

Configurações

Este módulo não define nenhuma configuração.

Camada de Aplicação

Serviços de Aplicação

  • ApiResourceAppService (implementa IApiResourceAppService): Implementa os casos de uso da interface de gerenciamento de recursos da API.
  • IdentityServerClaimTypeAppService (implementa IIdentityServerClaimTypeAppService): Usado para obter a lista de reivindicações.
  • ApiResourceAppService (implementa IApiResourceAppService): Implementa os casos de uso da interface de gerenciamento de recursos da API.
  • IdentityResourceAppService (implementa IIdentityResourceAppService): Implementa os casos de uso da interface de gerenciamento de recursos de identidade.

Provedores de Banco de Dados

Comum

Prefixo de Tabela/Collection e Esquema

Todas as tabelas/collections usam o prefixo IdentityServer por padrão. Defina as propriedades estáticas na classe AbpIdentityServerDbProperties se você precisar alterar o prefixo da tabela ou definir um nome de esquema (se suportado pelo seu provedor de banco de dados).

String de Conexão

Este módulo usa AbpIdentityServer como nome da string de conexão. Se você não definir uma string de conexão com esse nome, ela será usada a string de conexão Default.

Consulte a documentação sobre strings de conexão para obter mais detalhes.

Entity Framework Core

Tabelas
  • IdentityServerApiResources
    • IdentityServerApiSecrets
    • IdentityServerApiScopes
      • IdentityServerApiScopeClaims
    • IdentityServerApiClaims
  • IdentityServerClients
    • IdentityServerClientScopes
    • IdentityServerClientSecrets
    • IdentityServerClientGrantTypes
    • IdentityServerClientCorsOrigins
    • IdentityServerClientRedirectUris
    • IdentityServerClientPostLogoutRedirectUris
    • IdentityServerClientIdPRestrictions
    • IdentityServerClientClaims
    • IdentityServerClientProperties
  • IdentityServerPersistedGrants
  • IdentityServerIdentityResources
    • IdentityServerIdentityClaims

MongoDB

Coleções
  • IdentityServerApiResources
  • IdentityServerClients
  • IdentityServerPersistedGrants
  • IdentityServerIdentityResources