jwt - JWT 令牌中的用户 ID 属性到后端 WSO2 APIM
问题描述
我在实现以下用例时遇到了麻烦。我需要将用户 ID 声明传递给后端。我启用了 enable_outbound_auth_header 以便我从应用程序获得的令牌到达后端。我已设法将用户 ID 添加到此令牌。我想使用 JWT 授权、代码授权、客户端凭据授权和 APIKey。但是,用户 ID 仅添加到代码和 JWT 授权的令牌中。我这样做的方式是使用 OIDC 范围。我在文档中看到我可以使用 apim.jwt 来传递最终用户属性,但是我没有设法传递用户 ID。有什么办法可以做到这一点?(没有自定义生成器)
在我必须实现自定义令牌生成的情况下,我想知道要实现哪一个。我已经看到有很多可能性。我应该实现一个令牌生成器吗?这个适用于 apiKey 令牌吗?我认为至少有四种可能的令牌生成器(网关令牌生成器、jwt 令牌生成器、oauth 令牌生成器和 oidc 令牌生成器。我应该实现哪一个或多少个?
解决方案
我最终实现了两个自定义令牌生成器。我只是从每个生成器的默认类实现继承并添加了 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"
推荐阅读
- r - colMeans(x, na.rm = TRUE) 中的错误:“x”必须是数字
- pandas - 来自列表元素的熊猫新数据框
- reactjs - 为什么反应'stl-viewer'没有加载我的私人自定义python烧瓶api提供的stl文件
- python - Python - 替换字符串的一部分
- rust - 有没有办法为 x32 ABI 构建 Rust?
- node.js - Twilio 11200 错误 - HTTP 检索失败
- amazon-web-services - 将文件 (csv) 的 FTP 自动传输到 Amazon S3 存储桶
- python - Tkinter 中的匿名函数 - Python
- rust - 我们可以修改 execute around idiom 以使用可变的 self 吗?
- postgresql - 无法通过 unix 套接字连接到 postgres