使用 OIDC 和 WSO2 IS 向 JWT ACCESS TOKEN 添加自定义声明

Add custom claims to JWT ACCESS TOKEN using OIDC & WSO2 IS

我有兴趣向我的 WSO2 身份服务器颁发的 JWT 访问令牌(不是我的 ID 令牌)添加自定义声明。我正在关注 OpenID connect implicit flow with WSO2.

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

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

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

但是,我在我的 WSO2 身份服务器授予的访问令牌中没有看到该自定义声明。

对我的 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"
}

我是不是漏掉了一步?谢谢!

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

所以你需要用上面的方言创建一个声明,映射到新创建的本地声明。

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

现在用新用户尝试登录流程。