Azure Function认证级别为FUNCTION时APIM调用无需code参数是否正常
结论
这不是配置错误,属于APIM对接Azure Function的默认正常特性。
具体原理
当你将认证级别为FUNCTION的Azure Function导入APIM时,APIM会自动执行以下操作:
- 后台获取对应Function的访问密钥,将密钥存储到APIM的「命名值」中
- 自动在对应API的入站请求策略中添加配置,转发请求到Function后端时,会自动将密钥以
code查询参数或者x-functions-key请求头的形式附加到发往后端的请求里,完全不需要调用方主动传递该参数。
这个设计的核心目的是统一收口认证逻辑到APIM层,调用方只需对接APIM层面的认证规则(比如订阅密钥、OAuth2、IP黑白名单等),无需感知后端Function的密钥,也降低了Function密钥泄露的风险。
验证方式
你可以自行在APIM控制台验证该逻辑:
- 进入导入的Function对应API的「策略」编辑页,查看入站段的策略代码,会看到自动生成的附加密钥的配置
- 如果你临时删除这段自动生成的策略,再通过APIM调用该接口,就会和直接调用Function域名一样,需要主动传
code参数才能请求成功。
补充说明
直接通过Function自身域名访问时,没有APIM帮你自动附加密钥参数,因此必须手动携带code才能访问,完全符合FUNCTION认证级别的设计预期。
内容的提问来源于stack exchange,提问作者CYLong
相关产品推荐
相关产品推荐

