首页 > 解决方案 > WSO2 身份服务器 - 在 JWT 中获取租户 ID

问题描述

请参阅此链接,我可以将租户域名信息添加到我们的 JWT 令牌中,sub如下所示username@carbon.super

但我需要一种方法将 Tenand ID 信息像索赔一样放入 JWT。我怎样才能为 IS 5.10.0 做到这一点?

标签: jwtwso2wso2is

解决方案


IS OOTB 不支持它。但是您可以编写自定义声明提供程序示例并将其部署到 Identity Server 中。请参阅此示例以了解如何编写自定义声明提供程序。https://github.com/wso2/samples-is/tree/master/etc/custom-claim-provider

如果是授权码授权或刷新令牌授权流程,请参考此实现https://github.com/wso2/samples-is/blob/master/etc/custom-claim-provider/src/main/java/org/wso2/ carbon/identity/custom/claim/provider/CustomClaimProvider.java#L57

additionalClaims.put("tenantName", oAuthTokenReqMessageContext.getOauth2AccessTokenReqDTO().getTenantDomain());
additionalClaims.put("tenantId", OAuth2Util.getTenantId(oAuthTokenReqMessageContext.getOauth2AccessTokenReqDTO().getTenantDomain()));

如果它是隐式授权类型或混合流,请参考此和 https://github.com/wso2/samples-is/blob/master/etc/custom-claim-provider/src/main/java/org/wso2/ carbon/identity/custom/claim/provider/CustomClaimProvider.java#L44

 additionalClaims.put("tenantName", oAuthAuthzReqMessageContext.getTenantDomain());
 additionalClaims.put("tenantId", OAuth2Util.getTenantId(oAuthAuthzReqMessageContext.getTenantDomain()));

推荐阅读