强制服务提供商声明总是被询问并且不会在 openid 配置文件中返回
Mandatory service provider claims always asked and not returned in openid profile
我添加了本地自定义声明,即 http://wso2.org/claims/fg_imprenditore to http://wso2.org/claims 方言,并将其映射到自定义主用户存储属性(JDBC 用户存储)。
自定义声明出现在用户个人资料中,我可以 set/update 正确地获取值。
我已经定义了一个新的服务提供者,并在 Claim Configuration -> Use Local Claim Dialect 中添加了自定义声明。
此外,我还编辑了 /_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=" + 随机数
登录WSO2is服务器后提示以下信息(即使该属性已经存在于配置文件中):您正在尝试登录****应用程序,但需要在用户配置文件中填写以下信息。您可以填写以下内容并进行身份验证。但建议在您的身份提供者资料中填写这些信息,以避免您每次登录时都执行此步骤。
如果我(正确)填写标有“http://wso2.org/claims/fg_imprenditore”的字段,我可以继续。在任何情况下,索赔都不会在 JWT 令牌中返回。
此外,如果我进入用户配置文件,属性设置正确(使用新值!)但如果我再次尝试进行身份验证,我需要再次填写该属性..
非常感谢您的支持。
如果您没有在您的服务提供商上将声明标记为强制性声明,那么当您尝试登录时,它不应该请求它。此外,为了让 jwt 包含您的自定义声明,您需要映射自定义在 oauth 方言下声明一个新的自定义声明,然后将新的 oauth 声明映射到您使用的 oidc 范围下。我也花了一段时间才弄明白,因为没有足够的文档来描述这些步骤。希望这能解决您的问题。
发生这种情况是因为“http://wso2.org/claims/fg_imprenditore”声明未映射到 WSO2 IS 中的任何 oidc 声明。执行以下操作以解决此问题。
- 转到 IS 管理控制台主选项卡中声明下的列表。
- 点击http://wso2.org/oidc/claim
- 在 oidc 声明方言中添加名称为 fg_imprenditore 的新声明。您会看到下拉到 select "Mapped Local Claim"。将其映射到 http://wso2.org/claims/fg_imprenditore。 (检查 this 中的 "Add External Claim" 部分)
- 保存新的 oidc 声明并重试。
我添加了本地自定义声明,即 http://wso2.org/claims/fg_imprenditore to http://wso2.org/claims 方言,并将其映射到自定义主用户存储属性(JDBC 用户存储)。 自定义声明出现在用户个人资料中,我可以 set/update 正确地获取值。
我已经定义了一个新的服务提供者,并在 Claim Configuration -> Use Local Claim Dialect 中添加了自定义声明。
此外,我还编辑了 /_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=" + 随机数
登录WSO2is服务器后提示以下信息(即使该属性已经存在于配置文件中):您正在尝试登录****应用程序,但需要在用户配置文件中填写以下信息。您可以填写以下内容并进行身份验证。但建议在您的身份提供者资料中填写这些信息,以避免您每次登录时都执行此步骤。
如果我(正确)填写标有“http://wso2.org/claims/fg_imprenditore”的字段,我可以继续。在任何情况下,索赔都不会在 JWT 令牌中返回。
此外,如果我进入用户配置文件,属性设置正确(使用新值!)但如果我再次尝试进行身份验证,我需要再次填写该属性..
非常感谢您的支持。
如果您没有在您的服务提供商上将声明标记为强制性声明,那么当您尝试登录时,它不应该请求它。此外,为了让 jwt 包含您的自定义声明,您需要映射自定义在 oauth 方言下声明一个新的自定义声明,然后将新的 oauth 声明映射到您使用的 oidc 范围下。我也花了一段时间才弄明白,因为没有足够的文档来描述这些步骤。希望这能解决您的问题。
发生这种情况是因为“http://wso2.org/claims/fg_imprenditore”声明未映射到 WSO2 IS 中的任何 oidc 声明。执行以下操作以解决此问题。
- 转到 IS 管理控制台主选项卡中声明下的列表。
- 点击http://wso2.org/oidc/claim
- 在 oidc 声明方言中添加名称为 fg_imprenditore 的新声明。您会看到下拉到 select "Mapped Local Claim"。将其映射到 http://wso2.org/claims/fg_imprenditore。 (检查 this 中的 "Add External Claim" 部分)
- 保存新的 oidc 声明并重试。