遵循Azure官方文档配置APIM入站策略时抛出错误
问题根源及解决方法
- 核心问题:你在「入站处理」代码视图中错误地包含了
<inbound>根标签,而该视图仅需要填写<inbound>标签内部的策略元素,不需要外层的<inbound>包裹。
APIM策略编辑器的「入站处理」代码视图是嵌入到完整策略结构中的,系统会自动维护<inbound>、<backend>等顶层标签。手动添加<inbound>标签会导致策略结构嵌套错误,触发「策略部分不允许在指定范围」的报错。
修正后的策略代码
直接将以下内容粘贴到「入站处理」代码视图中(去掉外层的<inbound>标签):
<cors allow-credentials="true"> <allowed-origins> <origin>https://devjohn1.z11.web.core.windows.net/</origin> </allowed-origins> <allowed-methods preflight-result-max-age="120"> <method>GET</method> </allowed-methods> <allowed-headers> <header>*</header> </allowed-headers> <expose-headers> <header>*</header> </expose-headers> </cors> <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid." require-expiration-time="true" require-signed-tokens="true" clock-skew="300"> <openid-config url="https://devjohn1.b2clogin.com/devjohn1.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_myapp_frontend_devjohn1_signupandsignin" /> <required-claims> <claim name="aud"> <value>56f39849-19eb-49d6-qweqw-123123123</value> </claim> </required-claims> </validate-jwt> <rate-limit-by-key calls="300" renewal-period="120" counter-key="@(context.Request.IpAddress)" /> <rate-limit-by-key calls="15" renewal-period="60" counter-key="@(context.Request.Headers.GetValueOrDefault("Authorization","").AsJwt()?.Subject)" />
额外验证
确保你选择的策略作用域(全局/产品/API/操作)支持这些策略:
cors、validate-jwt、rate-limit-by-key均支持在所有4个作用域中使用,修正标签问题即可解决报错。
内容的提问来源于stack exchange,提问作者Kid_Learning_C
相关产品推荐
相关产品推荐

