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

如何在APIM中获取Basic Auth的用户名并存储为属性?

在WSO2 API Manager中获取Basic Auth用户名并保存为属性

当然可以实现,以下两种常用方法适用于APIM与Basic Auth的场景:

方法一:自定义中介解码提取用户名

Basic Auth的凭证是Base64编码的username:password格式,你可以在API的入流中介中添加脚本中介(JavaScript/Groovy)来解码并提取用户名,保存为自定义属性:

JavaScript中介示例

var authHeader = mc.getProperty('transport.headers.Authorization');
if (authHeader && authHeader.startsWith('Basic ')) {
    var encoded = authHeader.substring(6);
    var decoded = Packages.java.util.Base64.getDecoder().decode(encoded);
    var creds = new Packages.java.lang.String(decoded);
    var username = creds.split(':')[0];
    mc.setProperty('custom.auth.username', username);
}

提取完成后,custom.auth.username属性可在后续的中介逻辑、日志、路由策略中直接调用。

方法二:使用APIM内置认证属性

如果API已配置Basic Auth作为安全方案,APIM在认证通过后会自动将用户名存入内置属性,无需手动解码。常用的内置属性包括:

  • api.ut.userName:APIM新版本推荐使用的属性
  • username:部分旧版本APIM使用的属性

你可以直接在中介流中引用这些属性,比如日志输出:

<log level="custom">
    <property name="Authenticated User" expression="get-property('api.ut.userName')"/>
</log>

注意事项

  • 确保API的安全方案已启用Basic Auth,否则内置属性不会自动生成。
  • 自定义中介提取时,建议添加异常处理(如格式校验、空值判断),避免因无效Auth头导致API流程中断。
  • 保存的属性可用于限流规则、自定义业务逻辑、审计日志等场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:27:13