使用外部 OpenID Connect 身份提供者访问 WSO2 商店
Using an external OpenID Connect Identity Provider for WSO2 Store access
我正在设置 WSO2 API 管理器的一个实例,并希望通过将其链接到我现有的 OpenID Connect 身份服务器(打开上午)。我已将 OIDC 配置添加到商店配置文件 (wso2am-2.6.0/repository/deployment/server/jaggeryapps/store/site/conf/site.json) 中,其中包含授权、令牌的所有详细信息、用户信息端点等
当用户在商店中单击登录时,它会正确地将他们重定向到 OpenAM 以进行登录,并将访问令牌传递回商店应用程序。我还确保从 userinfo 端点返回一些必需的声明(如 preferred_username)。我还返回了一个 "groups" 声明,其中列出了用户应该属于 "subscriber" 的组。
我从用户信息返回的声明是:
{
"address":{
"formatted":"My House"
},
"given_name":"Danny",
"family_name":"Developer",
"name":"Danny Developer",
"preferred_username":"Danny Developer",
"groups":[
"subscriber"
],
"email":"adam.hatherly@nhs.net",
"sub":"developer1"
}
然而,无论我尝试使用声明和组名,商店仍然给出错误消息 "User is not permitted to log in to the Store."。我假设我还需要在访问令牌或用户信息端点中添加其他内容
使商店应用程序接受用户的声明列表,或商店或碳控制台中的一些其他配置?
用户登录问题的原因是用户没有登录店铺的相关权限。用户需要分配 internal/subscriber 角色。由于用户来自 OpenAM 而 APIM 没有任何信息来授权它,因此登录失败。
为此,您应该与 APIM(比如共享 LDAP)共享用户 OpenAM 用户存储并为用户分配 internal/subscriber 角色,或者使用自定义代码将用户添加到 APIM 用户存储并分配角色。
另一个最简单的选择是在 APIM 端创建一个具有订阅者角色的用户(添加一个虚拟密码)。但如果您不了解所有用户,这不是一个合适的解决方案
我正在设置 WSO2 API 管理器的一个实例,并希望通过将其链接到我现有的 OpenID Connect 身份服务器(打开上午)。我已将 OIDC 配置添加到商店配置文件 (wso2am-2.6.0/repository/deployment/server/jaggeryapps/store/site/conf/site.json) 中,其中包含授权、令牌的所有详细信息、用户信息端点等
当用户在商店中单击登录时,它会正确地将他们重定向到 OpenAM 以进行登录,并将访问令牌传递回商店应用程序。我还确保从 userinfo 端点返回一些必需的声明(如 preferred_username)。我还返回了一个 "groups" 声明,其中列出了用户应该属于 "subscriber" 的组。
我从用户信息返回的声明是:
{
"address":{
"formatted":"My House"
},
"given_name":"Danny",
"family_name":"Developer",
"name":"Danny Developer",
"preferred_username":"Danny Developer",
"groups":[
"subscriber"
],
"email":"adam.hatherly@nhs.net",
"sub":"developer1"
}
然而,无论我尝试使用声明和组名,商店仍然给出错误消息 "User is not permitted to log in to the Store."。我假设我还需要在访问令牌或用户信息端点中添加其他内容 使商店应用程序接受用户的声明列表,或商店或碳控制台中的一些其他配置?
用户登录问题的原因是用户没有登录店铺的相关权限。用户需要分配 internal/subscriber 角色。由于用户来自 OpenAM 而 APIM 没有任何信息来授权它,因此登录失败。
为此,您应该与 APIM(比如共享 LDAP)共享用户 OpenAM 用户存储并为用户分配 internal/subscriber 角色,或者使用自定义代码将用户添加到 APIM 用户存储并分配角色。
另一个最简单的选择是在 APIM 端创建一个具有订阅者角色的用户(添加一个虚拟密码)。但如果您不了解所有用户,这不是一个合适的解决方案