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

sta*_*aka 0 wso2 wso2is

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

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

本地声明设置图片

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

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

服务提供商声明设置图

但是,我没有在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
Run Code Online (Sandbox Code Playgroud)

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

令牌有效负载示例:

{
  "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"
}
Run Code Online (Sandbox Code Playgroud)

我错过了一步吗?谢谢!

Mad*_*ena 6

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

因此,您需要在上述方言中创建一个声明,并映射到新创建的本地声明。 在此处输入图片说明

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

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