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

Azure Logic Apps HTTP触发器:无需付费服务的认证方案咨询

实现Azure Logic App HTTP触发的无SSO认证方案(不依赖APIM/Front Door)

方案一:用户名/密码认证

可以直接在Logic App工作流内实现Basic Auth或自定义头的用户名密码验证,步骤如下:

  • 要求客户端通过HTTPS发送请求,将认证信息放在请求头:
    • 标准Basic Auth:使用Authorization: Basic <base64编码的用户名:密码>格式
    • 自定义头:比如X-Username和X-Password(不推荐,不如Basic Auth规范)
  • 在Logic App的HTTP触发器之后添加条件判断步骤:
    1. 解析认证信息:如果是Basic Auth,先提取headers('Authorization'),用replace(headers('Authorization'), 'Basic ', '')去掉前缀,再用base64ToString()解码得到用户名:密码字符串,最后用split(解码后字符串, ':')拆分成用户名和密码两个值
    2. 对比验证:将拆分出的用户名、密码与预先存储的可信值(推荐存在Azure Key Vault中,用Get Secret步骤获取)做精确匹配
    3. 分支处理:匹配成功则继续执行后续业务流程;匹配失败则用Response步骤返回401 Unauthorized状态码及错误提示

方案二:签名请求验证

通过HMAC哈希签名验证请求合法性,避免传输明文凭证,步骤如下:

  • 约定客户端签名规则:
    1. 客户端使用共享密钥,对请求的关键内容(比如请求体、当前时间戳、随机Nonce)进行HMAC-SHA256哈希,生成Base64编码的签名
    2. 将时间戳、Nonce、签名放在请求头(比如X-Timestamp、X-Nonce、X-Signature)
  • Logic App内验证流程:
    1. 提取请求头中的X-Timestamp、X-Nonce、X-Signature,以及请求体内容
    2. 验证时间戳有效性:计算当前时间与请求时间戳的差值,拒绝超出合理范围(比如5分钟)的请求,防止重放攻击
    3. 生成本地签名:使用相同的共享密钥(从Azure Key Vault获取),对相同的请求内容组合进行HMAC-SHA256哈希并Base64编码
    4. 签名对比:将本地生成的签名与请求头中的X-Signature做精确匹配,匹配通过则继续流程,否则返回403 Forbidden

注意事项

  • 所有敏感信息(密码、共享密钥)禁止硬编码在工作流中,必须通过Azure Key Vault的机密引用获取
  • 强制使用HTTPS传输请求,避免认证信息或签名内容被窃听
  • 签名验证中必须加入时间戳和Nonce验证,彻底防范重放攻击

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:57:08