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

如何配置AWS SNS以通过Azure API Manager的基本身份验证

配置AWS SNS基本身份验证以对接Azure API Manager

Postman能通过https://user:password@myurl.com/sns访问是因为它会自动将URL中的用户名密码转换为Authorization请求头,但AWS SNS不会自动做这个转换,得手动配置认证信息,以下是两种可行方案:

方法1:在SNS订阅中添加自定义Authorization请求头

这是最规范的方案,直接让SNS请求携带认证头:

  1. 生成Base64编码的认证字符串
    把你的用户名和密码拼接成user:password格式,转换成Base64编码:

    • Linux/macOS命令行:echo -n "user:password" | base64
    • Windows PowerShell:[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("user:password"))
      得到编码结果后,构造Authorization头的值:Basic <你的Base64编码字符串>,比如Basic dXNlcjpwYXNzd29yZA==。
  2. 配置SNS订阅的自定义头

    • AWS CLI方式:执行命令替换占位符:
      aws sns subscribe \
        --topic-arn arn:aws:sns:你的区域:你的账号ID:目标主题ARN \
        --protocol https \
        --notification-endpoint https://myurl.com/sns \
        --attributes '{
          "Headers": "{\"Authorization\": \"Basic 你的Base64编码字符串\"}"
        }'
      
    • AWS控制台方式:创建/编辑HTTPS订阅时,展开「订阅属性」,在「Headers」字段输入JSON格式的头信息:{"Authorization": "Basic 你的Base64编码字符串"}。

方法2:修改Azure APIM策略适配URL中的凭证(不推荐)

如果无法修改SNS配置,可调整APIM策略让它兼容URL中的凭证:
在APIM的API入站策略中添加以下代码,放在<inbound>节点内:

<choose>
  <when condition="@(!context.Request.Headers.ContainsKey("Authorization"))">
    <set-header name="Authorization" exists-action="override">
      <value>@("Basic " + System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(context.Request.Url.UserInfo)))</value>
    </set-header>
  </when>
</choose>

该策略会自动提取URL中的用户名密码,转换成Authorization头。但这种方式存在安全风险,URL中的凭证可能被日志记录,优先推荐方法1。

配置完成后,触发SNS测试通知,查看Azure APIM日志确认Authorization头已正常传递即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:02:44