JWT 令牌中的用户 ID 属性到后端 WSO2 APIM

User ID attribute in JWT token to the backend WSO2 APIM

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

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

我最终实现了两个自定义令牌生成器。我只是继承了每个生成器的默认 class 实现并添加了 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"