You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否修改WSO2令牌响应?如何添加自定义参数app_name

在WSO2 OAuth2令牌响应中添加自定义参数的实现方案

当然可以实现!我来给你分享两种生产环境里常用的方法,帮你在令牌响应Payload中添加"app_name":"ABC"这类自定义属性:

方法一:自定义令牌生成器(适合高度定制场景)

这种方式通过扩展WSO2的令牌生成逻辑来实现,灵活性很高:

    1. 编写一个Java类,继承org.wso2.carbon.identity.oauth2.token.AbstractOAuthTokenGenerator
    1. 重写generate()方法,在生成令牌DTO后添加自定义字段。这里给你一个示例代码片段,你可以根据实际需求调整(比如动态从应用元数据里获取app名称,而不是硬编码):
@Override
public OAuth2TokenDTO generate(OAuth2TokenReqMessageContext tokReqMsgCtx) throws OAuth2Exception {
    OAuth2TokenDTO tokenDTO = super.generate(tokReqMsgCtx);
    // 这里可以替换为根据客户端ID查询应用名称的逻辑
    String appName = "ABC";
    tokenDTO.addCustomParameter("app_name", appName);
    return tokenDTO;
}
    1. 把这个类打包成JAR,放到WSO2 IS安装目录下的<IS_HOME>/repository/components/dropins文件夹里
    1. 修改<IS_HOME>/repository/conf/identity/identity.xml配置文件,指定使用你的自定义令牌生成器:
<OAuth>
    <TokenGenerators>
        <TokenGenerator class="com.your.package.YourCustomTokenGenerator" type="default"/>
    </TokenGenerators>
</OAuth>
    1. 重启WSO2 Identity Server,之后再请求令牌,响应里就会带上app_name字段了。

方法二:用脚本中介快速实现(无需编写Java代码)

如果不想搞Java开发,用WSO2的脚本中介就能快速搞定:

    1. 登录WSO2 IS管理控制台,进入Main > Identity > OAuth > OAuth2 Token Configuration
    1. 找到令牌端点(Token Endpoint)的配置,添加一个JavaScript类型的脚本中介
    1. 写入以下脚本逻辑,把自定义字段插入到响应Payload里:
var responsePayload = JSON.parse(mc.getProperty("RESPONSE_PAYLOAD"));
// 同样,这里可以改成根据客户端ID动态获取应用名称的逻辑
responsePayload.app_name = "ABC";
mc.setProperty("RESPONSE_PAYLOAD", JSON.stringify(responsePayload));
    1. 保存配置后直接测试令牌请求,就能看到响应里新增了app_name字段。

小提示

  • 不要一直硬编码"ABC"哦,实际场景里你可以通过客户端ID,调用WSO2的应用管理API或者JDBC查询,从应用注册表中动态获取对应的应用名称
  • 方法一修改后必须重启服务器,方法二一般不需要,但建议测试前重启一下确保配置生效

内容的提问来源于stack exchange,提问作者jayesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:52:46