使用外部OpenID Connect身份提供程序进行WSO2商店访问

时间:2019-01-18 15:53:40

标签: wso2-am openid-connect

我正在设置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控制台中的其他配置?

1 个答案:

答案 0 :(得分:0)

用户登录问题的原因是用户没有相关权限登录商店。用户需要为其分配内部/订户角色。由于用户来自OpenAM,并且APIM没有任何授权信息,因此登录失败。

为此,您应该与APIM(例如共享的LDAP)共享用户OpenAM用户存储,并为用户分配内部/订户角色,或者使用自定义代码将用户添加到APIM用户存储并分配角色。

另一种最简单的选择是在APIM端创建一个具有订阅者角色的用户(添加虚拟密码)。但是如果您不认识所有用户,这不是一个合适的解决方案