首页 > 解决方案 > JWT 令牌中的用户 ID 属性到后端 WSO2 APIM

问题描述

我在实现以下用例时遇到了麻烦。我需要将用户 ID 声明传递给后端。我启用了 enable_outbound_auth_header 以便我从应用程序获得的令牌到达后端。我已设法将用户 ID 添加到此令牌。我想使用 JWT 授权、代码授权、客户端凭据授权和 APIKey。但是,用户 ID 仅添加到代码和 JWT 授权的令牌中。我这样做的方式是使用 OIDC 范围。我在文档中看到我可以使用 apim.jwt 来传递最终用户属性,但是我没有设法传递用户 ID。有什么办法可以做到这一点?(没有自定义生成器)

在我必须实现自定义令牌生成的情况下,我想知道要实现哪一个。我已经看到有很多可能性。我应该实现一个令牌生成器吗?这个适用于 apiKey 令牌吗?我认为至少有四种可能的令牌生成器(网关令牌生成器、jwt 令牌生成器、oauth 令牌生成器和 oidc 令牌生成器。我应该实现哪一个或多少个?

标签: jwtwso2wso2-amwso2is

解决方案


我最终实现了两个自定义令牌生成器。我只是从每个生成器的默认类实现继承并添加了 userId 声明。然后我将它们添加到 deployment.toml

对于 apikey 生成器(扩展 DefaultApiKeyGenerator),只需添加

[apim.devportal]
url = "https://localhost:9443/devportal"
api_key_generator_impl = "com.apikeygenerator.CustomAPIKeyGenerator" 

我实现的另一个是 oauth 令牌生成器(扩展的 JWTTokenIssuer)。使用将此添加到配置中

[[oauth.extensions.token_types]]
name = "JWT"
issuer = "com.oauthjwtgenerator.CustomOauthJWTGenerator"

推荐阅读