IdentityServer 模块
IdentityServer 模块完整集成了 IdentityServer4 (IDS) 框架,提供单点登录和API访问控制等高级身份验证功能。该模块将客户端、资源和其他IDS相关对象持久化到数据库中。在ABP v6.0之后的启动模板中,此模块已被 OpenIddict 模块 取代。
注意:IdentityServer和OpenIddict模块不能同时使用。它们是用于相同功能的独立OpenID提供商库。
安装方法
当您使用OpenIddict模块时,不需要此模块。但如果希望继续为应用程序使用IdentityServer4,可以安装此模块并移除OpenIddict模块。您可以继续将其作为包使用并轻松获取更新,也可以将其源代码包含到您的解决方案中(参见 get-source CLI 命令)以开发自定义模块。
源代码
此模块的源代码可在此处访问。源代码采用MIT许可,因此您可以自由使用和定制。
用户界面
该模块实现了领域逻辑和数据库集成,但不提供任何用户界面。如果您需要动态添加客户端和资源,管理界面会很有用。在这种情况下,您可以自行构建管理界面,或考虑购买提供此模块管理界面的ABP商业版。
与其他模块的关系
配置选项
AbpIdentityServerBuilderOptions
可以在您的Identity Server模块的PreConfigureServices方法中配置AbpIdentityServerBuilderOptions。示例:
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<AbpIdentityServerBuilderOptions>(builder =>
{
//在此设置选项...
});
}
AbpIdentityServerBuilderOptions属性:
UpdateJwtSecurityTokenHandlerDefaultInboundClaimTypeMap(默认:true):更新JwtSecurityTokenHandler.DefaultInboundClaimTypeMap以兼容Identity Server声明。UpdateAbpClaimTypes(默认:true):更新AbpClaimTypes以兼容Identity Server声明。IntegrateToAspNetIdentity(默认:true):集成到ASP.NET Identity。AddDeveloperSigningCredential(默认:true):设置为false以禁止在IIdentityServerBuilder上调用AddDeveloperSigningCredential()。
可以在您的Identity Server模块的PreConfigureServices方法中配置IIdentityServerBuilder。示例:
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<IIdentityServerBuilder>(builder =>
{
builder.AddSigningCredential(...);
});
}
内部实现
领域层
聚合
ApiResource
API资源用于允许客户端请求访问令牌。
ApiResource(聚合根):表示系统中的API资源。ApiSecret(集合):API资源的密钥。ApiScope(集合):API资源的作用域。ApiResourceClaim(集合):API资源的声明。
Client
客户端代表可以从您的Identity Server请求令牌的应用程序。
Client(聚合根):表示Identity Server客户端应用程序。ClientScope(集合):客户端的作用域。ClientSecret(集合):客户端的密钥。ClientGrantType(集合):客户端的授权类型。ClientCorsOrigin(集合):客户端的CORS来源。ClientRedirectUri(集合):客户端的重定向URI。ClientPostLogoutRedirectUri(集合):客户端的登出重定向URI。ClientIdPRestriction(集合):客户端的提供商限制。ClientClaim(集合):客户端的声明。ClientProperty(集合):客户端的自定义属性。
PersistedGrant
持久授权存储授权码、刷新令牌和用户同意。
PersistedGrant(聚合根):表示Identity Server的持久授权。
IdentityResource
身份资源是用户ID、姓名或电子邮件地址等数据。
IdentityResource(聚合根):表示Identity Server身份资源。IdentityClaim(集合):身份资源的声明。
仓储
为此模块定义了以下自定义仓储:
IApiResourceRepositoryIClientRepositoryIPersistentGrantRepositoryIIdentityResourceRepository
领域服务
此模块不包含任何领域服务,但重写了以下服务:
AbpProfileService(当AbpIdentityServerBuilderOptions.IntegrateToAspNetIdentity为true时使用)AbpClaimsServiceAbpCorsPolicyService
设置
此模块未定义任何设置。
应用层
应用服务
ApiResourceAppService(实现IApiResourceAppService):实现API资源管理界面的用例。IdentityServerClaimTypeAppService(实现IIdentityServerClaimTypeAppService):用于获取声明列表。ApiResourceAppService(实现IApiResourceAppService):实现API资源管理界面的用例。IdentityResourceAppService(实现IIdentityResourceAppService):实现身份资源管理界面的用例。
数据库提供程序
通用配置
表/集合前缀和架构
所有表/集合默认使用IdentityServer前缀。如果需要更改表前缀或设置架构名称(如果您的数据库提供商支持),请在AbpIdentityServerDbProperties类上设置静态属性。
连接字符串
此模块使用AbpIdentityServer作为连接字符串名称。如果未定义此名称的连接字符串,则回退到Default连接字符串。
有关详细信息,请参阅连接字符串文档。
Entity Framework Core
数据表
- IdentityServerApiResources
- IdentityServerApiSecrets
- IdentityServerApiScopes
- IdentityServerApiScopeClaims
- IdentityServerApiClaims
- IdentityServerClients
- IdentityServerClientScopes
- IdentityServerClientSecrets
- IdentityServerClientGrantTypes
- IdentityServerClientCorsOrigins
- IdentityServerClientRedirectUris
- IdentityServerClientPostLogoutRedirectUris
- IdentityServerClientIdPRestrictions
- IdentityServerClientClaims
- IdentityServerClientProperties
- IdentityServerPersistedGrants
- IdentityServerIdentityResources
- IdentityServerIdentityClaims
MongoDB
集合
- IdentityServerApiResources
- IdentityServerClients
- IdentityServerPersistedGrants
- IdentityServerIdentityResources
抠丁客


