如何在WSO2 API Manager生成的JWT中获得自定义声明

时间:2015-06-18 19:40:11

标签: wso2 wso2-am api-manager

我希望在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中?

IS 5.0.0 APIM 1.8.0

1 个答案:

答案 0 :(得分:1)

对于任何有兴趣的人,这里有两位领导让我走上解决问题的道路。

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

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