身份认证服务器模块(专业版)
您必须拥有 ABP团队或更高级别的许可证 才能使用此模块。
此模块为身份认证服务器提供集成和管理功能;
- 基于 IdentityServer4 库构建。
- 管理系统中的客户端、身份资源和API资源。
- 为客户端设置权限。
- 轻松创建标准身份资源(如角色、个人资料)。
- 创建自定义身份资源。
- 管理API资源
有关模块功能的概述,请参阅模块描述页面。
如何安装
身份认证服务器模块已在 启动模板 中预安装。因此,无需手动安装。
包
此模块遵循 模块开发最佳实践指南,由多个NuGet和NPM包组成。如果您想了解这些包及其之间的关系,请参阅该指南。
您可以访问身份认证模块包列表页面查看与此模块相关的包列表。
用户界面
菜单项
身份认证服务器模块将以下项目添加到“管理”菜单项下的“主”菜单中:
- 客户端:客户端管理页面。
- 身份资源:身份资源管理页面。
- API资源:API资源管理页面。
AbpIdentityServerMenuNames 类包含菜单项名称的常量。
页面
客户端管理
客户端页面用于管理身份认证服务器客户端。客户端代表可以从您的身份认证服务器请求令牌的应用程序。
您可以在此页面创建新客户端或编辑现有客户端:
身份资源管理
身份资源页面用于管理身份认证服务器的身份资源。身份资源是诸如用户ID、姓名或电子邮件地址之类的数据。
您可以在此页面创建新的身份资源或编辑现有身份资源:
此页面允许使用“创建标准资源”按钮创建标准身份资源(角色、个人资料、电话、openid、电子邮件和地址)。
API资源管理
身份认证服务器模块允许管理API资源。要允许客户端为API请求访问令牌,您需要定义API资源。
您可以在此页面创建新的API资源或编辑现有API资源:
数据种子
此模块在运行 .DbMigrator 应用程序时向数据库添加一些初始数据(参见数据种子系统):
- 创建标准身份资源,包括角色、个人资料、电话、openid、电子邮件和地址。
您可以在身份资源管理页面中删除或编辑创建的标准身份资源。您还可以使用“创建标准资源”按钮在身份资源管理页面中重新创建标准身份资源。
选项
AbpIdentityServerBuilderOptions
AbpIdentityServerBuilderOptions 可以在身份认证服务器模块的 PreConfigureServices 方法中配置。示例:
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<AbpIdentityServerBuilderOptions>(builder =>
{
//在此设置选项...
});
}
AbpIdentityServerBuilderOptions 属性:
UpdateJwtSecurityTokenHandlerDefaultInboundClaimTypeMap(默认值:true):更新JwtSecurityTokenHandler.DefaultInboundClaimTypeMap以与身份认证服务器声明兼容。UpdateAbpClaimTypes(默认值:true):更新AbpClaimTypes以与身份认证服务器声明兼容。IntegrateToAspNetIdentity(默认值:true):集成到ASP.NET Identity。AddDeveloperSigningCredential(默认值:true):设置为false以抑制在IIdentityServerBuilder上调用AddDeveloperSigningCredential()。
IIdentityServerBuilder 可以在身份认证服务器模块的 PreConfigureServices 方法中配置。示例:
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<IIdentityServerBuilder>(builder =>
{
builder.AddSigningCredential(...);
});
}
内部结构
领域层
聚合
此模块遵循实体最佳实践与约定指南。
ApiResource
API资源是允许客户端请求访问令牌所必需的。
ApiResource(聚合根):表示系统中的API资源。ApiSecret(集合):API资源的密钥。ApiScope(集合):API资源的作用域。ApiResourceClaim(集合):API资源的声明。
Client
客户端代表可以从您的身份认证服务器请求令牌的应用程序。
Client(聚合根):表示身份认证服务器客户端应用程序。ClientScope(集合):客户端的作用域。ClientSecret(集合):客户端的密钥。ClientGrantType(集合):客户端的授权类型。ClientCorsOrigin(集合):客户端的CORS来源。ClientRedirectUri(集合):客户端的重定向URI。ClientPostLogoutRedirectUri(集合):客户端的注销后重定向URI。ClientIdPRestriction(集合):客户端的提供程序限制。ClientClaim(集合):客户端的声明。ClientProperty(集合):客户端的自定义属性。
PersistedGrant
持久授权存储授权码、刷新令牌和用户同意。
PersistedGrant(聚合根):表示身份认证服务器的持久授权。
IdentityResource
身份资源是诸如用户ID、姓名或电子邮件地址之类的数据。
IdentityResource(聚合根):表示身份认证服务器的身份资源。IdentityClaim(集合):身份资源的声明。
存储库
此模块遵循存储库最佳实践与约定指南。
为此模块定义了以下自定义存储库:
IApiResourceRepositoryIClientRepositoryIPersistentGrantRepositoryIIdentityResourceRepository
领域服务
此模块遵循领域服务最佳实践与约定指南。
身份认证服务器模块不包含任何领域服务,但覆盖了以下服务:
AbpProfileService(当AbpIdentityServerBuilderOptions.IntegrateToAspNetIdentity为true时使用)AbpClaimsServiceAbpCorsPolicyService
设置
此模块未定义任何设置。
应用层
应用服务
ApiResourceAppService(实现IApiResourceAppService):实现API资源管理UI的使用案例。IdentityServerClaimTypeAppService(实现IIdentityServerClaimTypeAppService):用于获取声明列表。ApiResourceAppService(实现IApiResourceAppService):实现API资源管理UI的使用案例。IdentityResourceAppService(实现IIdentityResourceAppService):实现身份资源管理UI的使用案例。
数据库提供程序
通用
表/集合前缀和架构
所有表/集合默认使用 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
权限
查看 AbpIdentityServerPermissions 类的成员,了解为此模块定义的所有权限。
Angular UI
安装
要将应用程序配置为使用身份认证服务器,首先需要从 @volo/abp.ng.identity-server/config 导入 provideIdentityServerConfig 到根配置。然后,将其附加到 appConfig 数组。
// app.config.ts
import { provideIdentityServerConfig } from '@volo/abp.ng.identity-server/config';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideIdentityServerConfig()
],
};
身份认证服务器模块应在您的路由模块中导入并懒加载。它有一个静态的 createRoutes 方法用于配置。可用选项如下所示。可以从 @volo/abp.ng.identity-server 导入。
// app.routes.ts
const APP_ROUTES: Routes = [
// 其他路由定义
{
path: 'identity-server',
loadChildren: () =>
import('@volo/abp.ng.identity-server').then(c => c.createRoutes(/* 此处传递选项 */)),
},
];
如果您是通过启动模板生成的项目,则无需执行任何操作,因为这两个文件已经配置好了。
选项
您可以通过将以下选项传递给 createRoutes 静态方法来修改模块页面的外观和行为:
- entityActionContributors: 更改网格操作。有关详细信息,请参阅Angular的实体操作扩展。
- toolbarActionContributors: 更改页面工具栏。有关详细信息,请参阅Angular的页面工具栏扩展。
- entityPropContributors: 更改表格列。有关详细信息,请参阅Angular的数据表格列扩展。
- createFormPropContributors: 更改创建表单字段。有关详细信息,请参阅Angular的动态表单扩展。
- editFormPropContributors: 更改编辑表单字段。有关详细信息,请参阅Angular的动态表单扩展。
服务/模型
身份认证服务器模块的服务和模型是通过 ABP CLI 的 generate-proxy 命令生成的。如果您需要该模块的代理,可以在Angular项目目录中运行以下命令:
abp generate-proxy --module identityServer
可替换组件
eIdentityServerComponents 枚举提供了所有可替换组件的键。可以从 @volo/abp.ng.identity-server 导入。
有关详细信息,请参阅组件替换文档。
远程端点URL
身份认证服务器模块的远程端点URL可以在环境文件中配置。
export const environment = {
// 其他配置
apis: {
default: {
url: '默认URL',
},
AbpIdentityServer: {
url: '身份认证服务器远程URL'
}
// 其他API配置
},
};
上面显示的身份认证服务器模块远程URL配置是可选的。如果您未设置URL,则将使用 default.url 作为回退。
分布式事件
此模块为 Client 聚合和 ClientCorsOrigin 实体定义了事件。当 Client 或 ClientCorsOrigin 更改时,AllowedCorsOriginsCacheItemInvalidator 会使 AllowedCorsOriginsCacheItem 的缓存失效。有关分布式事件的更多信息,请参阅 标准分布式事件。
抠丁客








