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

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

58.1 IProfileService APIs

  • GetProfileDataAsync
    期望为用户加载声明的API。它传递了一个实例ProfileDataRequestContext

  • IsActiveAsync
    预期用于指示当前是否允许用户获取令牌的API。它传递了一个实例IsActiveContext

58.2 ProfileDataRequestContext

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

  • Subject
    ClaimsPrincipal模型的用户。

  • Client
    Client用于正被请求的声明。

  • RequestedClaimTypes
    请求的声明类型集合。

  • Caller
    正在请求声明的上下文的标识符(例如,身份令牌,访问令牌或用户信息端点)。常量IdentityServerConstants.ProfileDataCallers包含不同的常量值。

  • IssuedClaims
    将返回Claim的列表。预计这将由自定义IProfileService实现填充。

  • AddRequestedClaims
    扩展方法对ProfileDataRequestContext填充IssuedClaims,但首先根据索引过滤RequestedClaimTypes

58.3 请求的范围和声明映射

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

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

58.4 IsActiveContext

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

  • Subject
    ClaimsPrincipal模型的用户。

  • Client
    Client用于正被请求的声明。

  • Caller
    正在请求声明的上下文的标识符(例如,身份令牌,访问令牌或用户信息端点)。常量IdentityServerConstants.ProfileDataCallers包含不同的常量值。

  • IsActive
    指示是否允许用户获取令牌的标志。预计这将由自定义IProfileService实现分配。

github地址

第58章 Profile Service - Identity Server 4 中文文档(v1.0.0)的更多相关文章

  1. 第20章 定义客户端 - Identity Server 4 中文文档(v1.0.0)

    客户端表示可以从您的身份服务器请求令牌的应用程序. 详细信息各不相同,但您通常会为客户端定义以下常用设置: 唯一的客户ID 如果需要的秘密 允许与令牌服务的交互(称为授权类型) 身份和/或访问令牌发送 ...

  2. 第38章 刷新令牌 - Identity Server 4 中文文档(v1.0.0)

    第38章 刷新令牌 由于访问令牌的生命周期有限,因此刷新令牌允许在没有用户交互的情况下请求新的访问令牌. 以下流程支持刷新令牌:授权代码,混合和资源所有者密码凭据流.需要明确授权客户端通过设置Allo ...

  3. 第36章 扩展授权 - Identity Server 4 中文文档(v1.0.0)

    OAuth 2.0为令牌端点定义了标准授权类型,例如password,authorization_code和refresh_token.扩展授权是一种添加对非标准令牌颁发方案(如令牌转换,委派或自定义 ...

  4. 第19章 定义资源 - Identity Server 4 中文文档(v1.0.0)

    您通常在系统中定义的第一件事是您要保护的资源.这可能是您的用户的身份信息,如个人资料数据或电子邮件地址,或访问API. 注意 您可以使用C#对象模型定义资源 - 或从数据存储加载它们.IResourc ...

  5. 第61章 IdentityServer Options - Identity Server 4 中文文档(v1.0.0)

    IssuerUri 设置将在发现文档和已颁发的JWT令牌中显示的颁发者名称.建议不要设置此属性,该属性从客户端使用的主机名中推断颁发者名称. PublicOrigin 此服务器实例的来源,例如http ...

  6. 第62章 EntityFramework支持 - Identity Server 4 中文文档(v1.0.0)

    为IdentityServer中的配置和操作数据扩展点提供了基于EntityFramework的实现.EntityFramework的使用允许任何EF支持的数据库与此库一起使用. 这个库的仓库位于这里 ...

  7. 第55章 API资源 - Identity Server 4 中文文档(v1.0.0)

    此类建模API资源. Enabled 指示此资源是否已启用且可以请求.默认为true. Name API的唯一名称.此值用于内省身份验证,并将添加到传出访问令牌的受众. DisplayName 该值可 ...

  8. 第54章 身份资源 - Identity Server 4 中文文档(v1.0.0)

    此类为身份资源建模. Enabled 指示此资源是否已启用且可以请求.默认为true. Name 标识资源的唯一名称.这是客户端将用于授权请求中的scope参数的值. DisplayName 该值将用 ...

  9. 第42章 发现(discovery) - Identity Server 4 中文文档(v1.0.0)

    可以在*https://baseaddress/.well-known/openid-configuration*找到发现文档.它包含有关IdentityServer的端点,密钥材料和功能的信息. 默 ...

随机推荐

  1. Git使用的自我总结

    一.Git安装后打开Git bash,第一次使用 1.Git账号信息配置 2.用命令git clone从远程库克隆 会在克隆的项目下有一个隐藏的.git目录,这个目录是Git来跟踪管理版本库的,没事千 ...

  2. ionic4 开发企业微信应用0

    作为一个后台开发人员,几年前参与过Ionic1开发过一微信公众号的经历,所以这次开发企业微信应用,就使用了ionic,正好ionic4 rc版本发布,虽然不是正式版,作为本项目的项目经理,还是决定使用 ...

  3. Linux shell编程-退出的状态码

    linux 提供了一个专门的变量$?来保存上个已执行命令的状态码 linux 的错误状态退出状态码没有什么标准可遵循,但有一些参考 状态码 描述 0 命令成功结束 1 一般性未知错误 2 不适合的sh ...

  4. 解析jsonObject,赋给指定的对象

    从JSONObject中解析数据,并赋给给定的对象 public static Object parseBean(JSONObject jsonObject, Object obj) {   if ( ...

  5. 批处理修改IP

    1. 单次修改IP,批处理文件 newIP.bat @echo =========== Changing to IP : 222.192.41.%1 netsh interface ip set ad ...

  6. [Swift]LeetCode462. 最少移动次数使数组元素相等 II | Minimum Moves to Equal Array Elements II

    Given a non-empty integer array, find the minimum number of moves required to make all array element ...

  7. [Swift]LeetCode763. 划分字母区间 | Partition Labels

    A string S of lowercase letters is given. We want to partition this string into as many parts as pos ...

  8. ubuntu16.04安装lnmp环境

     1.安装mysql sudo apt install mysql-server 2.安装nginx和php #添加nginx和php的ppa源 sudo apt-add-repository ppa ...

  9. Python档案袋(函数与函数装饰器 )

    特点:代码复用.可扩展.保持一致性 函数简单的实现,返回值的不同: #定义方法 def funx1(): pass def funx2(): return 0 def funx3(): return ...

  10. Vue实现移动端页面切换效果

    找了好多博客实现效果都……emmm…… 应用Vue自带的过渡 < 进入/离开 & 列表过渡 >和 嵌套路由 和 fixed定位实现 其实还是挺简单的. 在子页面把整个页面做绝对定位 ...