WSO2 APIM中JWT令牌传递User ID属性至后端的实现问题咨询
透传User ID全场景支持方案
无自定义生成器实现方案
无需开发自定义生成器,仅通过调整内置配置即可实现四种认证方式的User ID统一透传,操作步骤如下:
- 处理client credentials grant无终端用户上下文的问题:在对应客户端应用的自定义属性中新增
userId字段,填入需要透传的固定用户ID,也可以将订阅账号的用户ID关联到应用属性中。 - 修改服务部署配置文件,新增如下配置项:
[apim.jwt] enable = true included_claims = ["userId"] claim_dialect = "http://wso2.org/claims" [apim.oauth] include_client_creds_app_attributes = true [apim.apikey] include_app_attributes = true include_subscriber_attributes = true
- 重启服务后即可生效,所有认证场景的透传令牌都会自动携带
userId声明。
如果上述配置无法适配你的个性化业务逻辑,再选择自定义生成器方案。
自定义生成器选型方案
仅需要实现两类生成器即可覆盖所有四种认证场景,不需要开发全部四类生成器:
- JWT Token Generator:负责处理JWT grant、Code grant、client credentials grant三类OAuth2认证场景的令牌生成,你只需要重写
populateCustomClaims方法,统一从用户上下文或者应用属性中提取User ID注入到令牌声明即可。 - Gateway Token Generator:负责处理APIKey认证场景下后端透传JWT的生成,重写自定义声明注入逻辑后,即可将APIKey关联的应用/订阅者的User ID属性注入到透传令牌中。
自定义的两类生成器完全支持APIKey场景,无需额外开发oauth token generator、oidc token generator。
内容的提问来源于stack exchange,提问作者josecu08
相关产品推荐
相关产品推荐

