2

我想通过 APIM 生成的 JWT 将所有声明包含在我们的辅助用户存储中。我们正在为当前任务使用隐式身份验证,因此用户必须向 IS 进行身份验证。我们将联合身份验证与 JIT 配置一起使用。

我已启用:

<ClaimsRetrieverImplClass>org.wso2.carbon.apimgt.impl.token.DefaultClaimsRetriever</ClaimsRetrieverImplClass>

并设置:

<ConsumerDialectURI>http://wso2.org/claims</ConsumerDialectURI>

并启用:

<EnableTokenGeneration>true</EnableTokenGeneration>

但是生成的 JWT 不包括用户的数据,只包括标准网关声明,包括最终用户。

我已经确认用户是在数据库中创建的,并且用户的声明存储在表 UM_USER_ATTRIBUTE 中。我确实注意到在主用户存储(非联合)中,UM_USER_ATTRIBUTE 为空,而 UM_CLAIM 已填充。会不会是 JIT 配置将数据放在了 ClaimsManager 未检查的表中?

如何让用户的声明(如电子邮件)显示在 JWT 中?

是 5.0.0 APIM 1.8.0

4

1 回答 1

1

对于任何感兴趣的人,这里有两条线索让我走上了解决问题的道路。

  1. 如果数据来自主要用户存储,我会取得更大的成功。我不相信它不能使用辅助用户商店,但我只是在切换到主要用户商店后才成功,而且我还没有测试过切换回来。

  2. JWT 配置需要在执行 KeyManager 职责的服务器上完成。在我们的例子中,我们将 IS 作为我们的 KeyManager,因此我们必须对 IS 服务器上的 api-manager.xml 进行配置更改。

于 2015-07-07T17:08:38.573 回答