个人资料服务

IdentityServer通常在创建令牌或处理对userinfo或内省端点的请求时需要有关用户的身份信息。默认情况下,IdentityServer仅在身份验证cookie中具有声明,以便为此身份数据进行绘制。

将用户所需的所有可能声明放入cookie中是不切实际的,因此IdentityServer定义了一个扩展点,允许根据用户需要动态加载声明。这个可扩展点是IProfileService开发人员通常可以实现此接口来访问包含用户身份数据的自定义数据库或API。

IProfileService的API 

GetProfileDataAsync
预期为用户加载声明的API。它传递了一个实例ProfileDataRequestContext
IsActiveAsync
预期用于指示当前是否允许用户获取令牌的API。它传递了一个实例IsActiveContext

ProfileDataRequestContext 

模拟用户声明的请求,并且是返回这些声明的工具。它包含以下属性:

Subject
ClaimsPrincipal模型的用户。
Client
Client用于正被请求的权利要求。
RequestedClaimTypes
请求的索赔类型集合。
Caller
正在请求声明的上下文的标识符(例如,身份令牌,访问令牌或用户信息端点)。常量IdentityServerConstants.ProfileDataCallers包含不同的常量值。
IssuedClaims
Claim将返回列表预计这将由自定义IProfileService实现填充
AddRequestedClaims
扩展方法对ProfileDataRequestContext填充IssuedClaims,但首先过滤基于的声明RequestedClaimTypes

请求的范围和声明映射

客户端请求的范围控制用户声明在令牌中返回给客户端的内容。GetProfileDataAsync方法负责根据上的RequestedClaimTypes集合动态获取这些声明ProfileDataRequestContext

RequestedClaimTypes集合是基于该定义的用户索赔人口资源的范围进行建模。如果请求的范围是身份资源,则将RequestedClaimTypes根据在中定义的用户声明类型填充声明中的声明IdentityResource如果请求的范围是API资源,则将RequestedClaimTypes根据ApiResource和/或中定义的用户声明类型填充声明中的声明Scope

IsActiveContext 

对要确定的请求建模是当前允许用户获取令牌。它包含以下属性:

Subject
ClaimsPrincipal模型的用户。
Client
Client用于正被请求的权利要求。
Caller
正在请求声明的上下文的标识符(例如,身份令牌,访问令牌或用户信息端点)。常量IdentityServerConstants.ProfileDataCallers包含不同的常量值。
IsActive
指示是否允许用户获取令牌的标志。预计这将由自定义IProfileService实现分配

nidie.com.cn - 用心与你沟通