【问题标题】:WSO2 IS: OpenID Connect custom claims in 5.2.0?WSO2 IS:5.2.0 中的 OpenID Connect 自定义声明?
【发布时间】:2017-02-18 22:07:14
【问题描述】:

我已安装 WSO2 IS 5.2.0,但无法检索自定义创建的声明。

我已向方言 http://wso2.org/claims 添加了新声明,并且我还添加了将相同属性映射到方言 http://wso2.org/oidc/claim 的新声明,该声明适用于 5.1.0 版,但在 5.2.0 版中不起作用。

所有字段都存在于数据库属性表中。我正在使用 Oauth2 OpenID connect userInfo 来获取用户数据。

这是我的服务提供商的声明配置:

在 5.1.0 中使用此配置,我从图像中获得了所有请求的声明,但在 5.2.0 中,我只获得了非自定义声明 - 默认情况下这两种方言中都已存在。

【问题讨论】:

    标签: wso2is claims-based-identity openid-connect


    【解决方案1】:

    此行为的原因是在 5.2.0 中引入了 OpenIDConnect 声明范围。因此,基本上,当您请求 OIDC 令牌时,您可以指定绑定到一组声明的范围值。因此,当您将该 OIDC 令牌发送到 userinfo 端点时,只会返回在 OIDC 范围配置和 SP 声明配置中通用的声明(即这两个配置中声明的交集)。

    举个例子, 考虑默认所需的范围需要获取一个 OIDC 令牌,即 'openid'

    openid 范围绑定到以下方案。

    子、电子邮件、email_verified、姓名、family_name、given_name、middle_name、昵称、preferred_username、个人资料、图片、网站、性别、生日、区域信息、区域设置、updated_at、phone_number、phone_number_verified、地址、街道

    (您可以使用 /_system/config/oidc 注册表中的“oidc”文件进行配置)

    因此,在您的情况下,请通过编辑 oidc 文件将自定义声明 slotCentreURL、role、slotCentre 添加到此范围的映射声明中。

    或者,您可以添加一个新范围,例如“customSPScope1”,其中包含您需要的声明,在获取 OIDC 令牌时发送它,除了强制性的 openid 范围。

    您还需要在服务提供者配置中配置所需的声明。这里的逻辑是只返回配置在 OIDC 范围级别的声明和配置在 SP 级别的声明的交集。

    【讨论】:

    • 谢谢你的作品。这是否意味着 Service Provider 的声明配置不再重要?
    • 实际上最终输出是 OIDC 范围声明和在 SP 处配置的声明的交集。所以在 SP 上配置的声明仍然很重要:)
    • 我也在尝试添加自定义声明,但无法正常工作。我在两种方言中都添加了 mobile_verified 属性。然后编辑 openid 范围并将 mobile_verified 添加到其中,但未在 userinfo 响应中获取它。你是如何映射新范围的?刚刚编辑 openid 或创建了新范围?物理文件有什么变化吗?
    • 向两种方言添加声明时使用的映射属性是什么?
    【解决方案2】:

    原因可能是映射属性。您需要在 OIDC 方言和 wso2 方言中为自定义声明配置相同的映射属性

    【讨论】:

    • 事实并非如此,我在两种方言中都有相同的映射属性。相同的配置适用于 5.1.0,但不适用于 5.2.0。
    猜你喜欢
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 2017-07-24
    • 2020-08-19
    • 2021-11-14
    • 2019-05-18
    相关资源
    最近更新 更多