使用OIDC和WSO2 IS向JWT访问令牌添加自定义声明

时间:2018-12-06 00:26:34

标签: wso2 wso2is

我有兴趣向WSO2身份服务器发布的JWT访问令牌(不是我的ID令牌)添加自定义声明。我正在跟踪OpenID与WSO2的隐式连接。

我尝试通过转到WSO2 IS控制台并导航到“声明”->“添加”->“添加本地声明”来添加自定义声明。然后,将声明映射到连接的OpenLDAP实例中的属性。

Image of Local Claim Setup

^上面的图像只是一个例子,我使用的实际声明映射到我的OpenLDAP实例中充当辅助用户存储的属性。

然后我尝试在服务提供商->列表->索赔配置下的服务提供商中添加索赔

Image of Service Provider Claim Setup

但是,我的WSO2 Identity Server授予的访问令牌中没有看到该自定义声明。

对我的WSO2身份服务器的调用如下:

https://localhost:9443/oauth2/authorize?client_id=MY_CLIENT_ID&redirect_uri=MY_REDIRECT_URI&scope=openid&response_type=token&response_mode=query&nonce=MY_NONCE

输入正确的凭据后,令牌中看不到我的自定义声明。

令牌有效负载示例:

{
  "sub": "SUB_REMOVED",
  "aud": "AUD_REMOVED",
  "nbf": 1544053330,
  "azp": "AZP_REMOVED",
  "scope": "openid",
  "iss": "https://localhost:9443/oauth2/token",
  "groups": [
    "TEST LDAP 3/admin",
    "Internal/everyone"
  ],
  "exp": 1544056930,
  "iat": 1544053330,
  "jti": "JTI_REMOVED"
}

我错过了一步吗?谢谢!

1 个答案:

答案 0 :(得分:2)

使用OIDC时,WSO2 IS将发送映射在http://wso2.org/oidc/claim方言中的声明。

因此,您需要在上述方言中创建一个声明,并映射到新创建的本地声明。 enter image description here

然后,您需要将新创建的声明添加到所请求范围的允许声明列表中。为此,请转到Manage -> OIDC Scopes -> List,然后单击openid范围(或您使用的任何其他范围)的Add Claims操作。现在添加新创建的openid声明,单击“添加”,然后单击“完成”。

现在尝试使用新用户登录。