我已将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令牌都不会返回索赔。
此外,如果我进入用户配置文件,该属性设置正确(使用新值!)但如果我再次尝试进行身份验证,我需要再次填充该属性..
非常感谢你的支持。
答案 0 :(得分:2)
如果您未在服务提供商处将该声明标记为必需,则在您尝试登录时不应该请求该声明。此外,为了使jwt包含您的自定义声明,您需要将自定义声明映射到在oauth方言下的新自定义声明,然后在您使用的oidc范围内映射新的oauth声明。由于没有足够的文档描述这些步骤,我花了一段时间才得到它。希望这能解决你的问题。
答案 1 :(得分:0)
这是因为“http://wso2.org/claims/fg_imprenditore”声明未映射到WSO2 IS中的任何oidc声明。在解决问题时执行以下操作。