强制性服务提供商声明始终要求,而不是在openid配置文件中返回

时间:2017-03-06 12:44:50

标签: wso2is

我已将http://wso2.org/claims/fg_imprenditore添加到http://wso2.org/claims方言的本地自定义声明,并将其映射到自定义主用户存储属性(JDBC用户存储)。 自定义声明显示在用户配置文件中,我可以正确设置/更新值。

我已经定义了一个新的服务提供商,并在声明配置中添加了自定义声明 - >使用本地声明方言。

此外,我已编辑/ _system / config / oidc并修改了openid属性以包含新声明,如下所示:sub,...,street,http://wso2.org/claims/fg_imprenditore

现在的问题。 我从javascript客户端请求JWT令牌,请求如下: HTTP:// ********** / RESPONSE_TYPE = id_token&安培; CLIENT_ID =" +" f8SatEWpyi1qvPLVspsDfTbefm0a" +"& scope = openid& redirect_uri = http://localhost:3000/oauth_callback.html&nonce=" + nonce

登录后,WSO2is服务器会提示以下消息(即使配置文件中已存在该属性):您正尝试登录****应用程序,但需要在用户配置文件中填写以下信息。您可以填写以下内容并继续进行身份验证。但建议在身份提供者资料中填写这些信息,以便每次登录时都避免这一步骤。

如果我填写(正确)标记为" http://wso2.org/claims/fg_imprenditore"我可以继续在任何情况下,JWT令牌都不会返回索赔。

此外,如果我进入用户配置文件,该属性设置正确(使用新值!)但如果我再次尝试进行身份验证,我需要再次填充该属性..

非常感谢你的支持。

2 个答案:

答案 0 :(得分:2)

如果您未在服务提供商处将该声明标记为必需,则在您尝试登录时不应该请求该声明。此外,为了使jwt包含您的自定义声明,您需要将自定义声明映射到在oauth方言下的新自定义声明,然后在您使用的oidc范围内映射新的oauth声明。由于没有足够的文档描述这些步骤,我花了一段时间才得到它。希望这能解决你的问题。

答案 1 :(得分:0)

这是因为“http://wso2.org/claims/fg_imprenditore”声明未映射到WSO2 IS中的任何oidc声明。在解决问题时执行以下操作。

  1. 转到IS管理控制台主选项卡中的声明下的列表。
  2. 点击http://wso2.org/oidc/claim
  3. 在oidc claim dialect中添加名为fg_imprenditore的新声明。您将看到下拉列表以选择“映射本地声明”。将其映射到http://wso2.org/claims/fg_imprenditore。 (选中this
  4. 中的“添加外部声明”部分
  5. 保存新的oidc声明,然后重试。