我正在设置WSO2 API管理器的实例,并希望通过将其链接到我现有的OpenID Connect身份服务器(OpenAM)来使开发人员能够访问API“存储”页面。我已将OIDC配置添加到商店配置文件( wso2am-2.6.0 / repository / deployment / server / jaggeryapps / store / site / conf / site.json ),其中包含所有授权,令牌,用户信息端点等。
当用户单击商店中的登录名时,它会正确地将他们重定向到OpenAM进行登录,并将访问令牌传递回商店应用程序。我还确保了一些必需的声明是从userinfo端点返回的(例如preferred_username)。我还返回了一个“组”声明,例如,列出了用户应位于“订户”中的组。
我从userinfo返回的声明是:
{
"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"
}
但是,无论我尝试使用声明和组名称如何,该商店仍然会显示错误消息“不允许用户登录到该商店”。我假设需要在访问令牌或userinfo端点中添加其他内容 声明列表以使商店应用接受用户或商店或Carbon控制台中的其他配置?
答案 0 :(得分:0)
用户登录问题的原因是用户没有相关权限登录商店。用户需要为其分配内部/订户角色。由于用户来自OpenAM,并且APIM没有任何授权信息,因此登录失败。
为此,您应该与APIM(例如共享的LDAP)共享用户OpenAM用户存储,并为用户分配内部/订户角色,或者使用自定义代码将用户添加到APIM用户存储并分配角色。
另一种最简单的选择是在APIM端创建一个具有订阅者角色的用户(添加虚拟密码)。但是如果您不认识所有用户,这不是一个合适的解决方案