WSO2 IS 5.10:无法在使用 OIDC 联合身份验证的服务提供商生成的令牌中使用常驻用户存储的声明

问题描述 投票:0回答:1

我正在开发一个使用 WSO2 IS 5.10 的旧项目(目前尚未考虑迁移)

我正在尝试实现一个场景:

我使用支持 OIDC 的外部 IDP 作为身份验证源,但希望从共享相同 UserPrincipalName 的本地用户的配置文件中检索声明


为了实现这一目标,这就是我所做的:

  1. 我在域 USER1 下的 wso2 用户存储中创建了一个带有
    upn
    A
    的用户。我在其默认配置文件中提供了一个电子邮件和一些角色
  2. 我在域 A 下创建一个身份提供商 (
    WSO2IDP
    ),该身份提供商连接到支持 OIDC 的联合身份提供商 (EXTIDP) 的服务提供商 (EXTSP)
    • 该步骤意味着输入EXTSPEXTIDP中提供的所有OIDC配置。所有配置都是从 EXTIDP 及其众所周知的 url 检索的。 WSOIDP 配置
    • 只有我不确定的参数是
      Alias
      (我怀疑它没有任何影响)和
      OpenID Connect User ID Location
      (不确定它的作用)
    • 我被迫对
      Additional Query Parameters
      中的空格进行 urlEncode,因为 wso2 抛出了格式错误的 url 错误。
  3. 我在域
    A
    (WSO2SP) 下的 WSO2 中创建了一个服务提供商,该服务提供商使用使用 WSO2IDP 的联合身份验证步骤。我要求 3 个本地强制索赔索赔配置
    • http://wso2.org/claims/emailaddress
    • http://wso2.org/claims/role
    • http://wso2.org/claims/userprincipal
  4. 我在 EXTIDP 中使用用户名
    USER1
  5. 创建一个用户

我的期望:

启动登录WSO2SP时,我被重定向到EXTSP登录屏幕。

我输入在步骤4中创建的用户的用户名密码

我被重定向到我的 oauthCallbackUrl(在 WSO2SP 入站身份验证配置中配置),带有

code
。我可以将此代码交换到我的 WSO2SP 以获得:

  • id token
  • access token
  • refresh token

此时,我希望我的

id token
包含步骤 3 的强制声明,其中填充了在步骤
1
中创建的用户 USER1 配置文件的值,但我总是收到一个错误页面,告诉我一些强制只读声明找不到。

我怀疑 wso2 很难将经过身份验证的用户从 EXTIDP 链接到我的本地用户,但我不知道从这里该去哪里。


额外信息:

  • 我尝试了 WSO2IDP 中声明映射的多种变体,以将 sub 声明映射到本地声明 http://wso2.org/claims/userprincipal 但似乎没有任何效果。

  • 我使用 authorization_code grant 直接从

    EXTSDP
    检索令牌,以确保所需信息(sub 声明)位于检索到的
    id token
    userinfo 端点中。它在两种情况下都存在。

我不知道需要哪些信息来解决这个问题,但如果您要求评论的精确性,我将很乐意满足。

wso2-identity-server claims-based-identity federated-identity
1个回答
0
投票

您可以使用 WSO2 IS 的帐户链接功能将 EXTSDP 的联合身份与 WSO2 IS 中的现有本地身份链接。这可以使用自适应脚本来完成。当用户使用联合 IdP 进行身份验证时,自适应身份验证脚本可以从联合用户对象检索“sub”值,并搜索具有相同“UserPrincipalName”声明值的任何本地用户。然后您可以使用

doAssociationWithLocalUser(fedUser, localUsername, tenantDomain, userStoreDomain)
https://is.docs.wso2.com/en/5.10.0/references/adaptive-authentication-js-api-reference/#doassociationwithlocaluserfeduser-localusername-tenantdomain-userstoredomain)自适应身份验证功能,将联合帐户与匹配的本地帐户链接起来。

媒体文章中解释的“场景 1” - https://medium.com/identity-beyond-borders/social-account-linking-with-wso2-identity-server-78b8a566e225解释了您的具体流程关注。

© www.soinside.com 2019 - 2024. All rights reserved.