如何通过Azure应用网关向服务应用传递密钥且不暴露在URL中
解决方案
完全可以实现,核心是通过Azure应用网关的请求重写能力,在网关转发请求到后端函数应用的环节自动注入授权密钥,用户侧访问网关地址时不需要携带任何密钥信息。
具体配置步骤
- 提前记录对应函数的
function级授权密钥,也就是你现有URL中code参数的值:XV2Js97D/Zy5aw6th2hr7iLzFbBiuZ4RfdKuT8nA== - 进入Azure门户的应用网关配置页面,找到重写规则配置项,新建一个重写规则集
- 配置规则匹配条件:按照你的访问场景,设置匹配请求路径为
/api/HttpExample即可,如果要覆盖该后端函数应用下的所有函数,可设置匹配路径前缀为/api/* - 配置重写动作,二选一即可:
- 方案1(追加查询参数):操作类型选「追加查询参数」,参数名填
code,参数值填你提前记录的函数密钥,勾选「已存在时跳过」选项避免参数冲突 - 方案2(新增请求头,更推荐):操作类型选「新增HTTP请求头」,头名填
x-functions-key,头值填函数密钥。Azure函数原生支持从该请求头读取授权密钥,不需要依赖URL查询参数,安全性更高
- 方案1(追加查询参数):操作类型选「追加查询参数」,参数名填
- 将配置好的重写规则集关联到绑定了该函数应用后端的监听器/路由规则上,保存配置等待应用网关生效
验证方式
配置生效后直接访问http://20.0.0.1/api/HttpExample,无需携带code参数即可正常获取函数返回结果,不会返回401未授权错误。
内容的提问来源于stack exchange,提问作者Aadhar
相关产品推荐
相关产品推荐

