我正在尝试使用Azure API管理访问服务。我已通过使用API〉设置〉安全性并选择扩展oAuth 2.0在服务上启用了oAuth身份验证。但即使在进行此更改后,我也可以在不提供任何令牌的情况下访问终结点。我是否遗漏了什么?
8iwquhpp1#
我没有添加JWT validation policy to pre-authorize requests要添加策略,请选择Design选项卡,然后单击Inbound Processing下的〈/〉图标(用于策略代码编辑器),然后添加以下代码:
JWT validation policy to pre-authorize requests
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://login.microsoftonline.com/{aad-tenant}/v2.0/.well-known/openid-configuration" /> <required-claims> <claim name="aud"> <value>{backend-app-client-id}</value> </claim> </required-claims> </validate-jwt>
保存后,提出新请求。
9cbw7uwe2#
我希望您已经配置了JWT策略,您能否确认一下?如果有人在没有标记或使用无效标记的情况下调用您的API?例如,尝试在没有Authorization头的情况下调用API,调用仍将通过。这是因为API管理不验证访问令牌,它只是将授权头传递给后端API。要预授权请求,可以通过验证每个传入请求的访问标记来使用策略。如果请求没有有效的标记,API管理将阻止它。参考:https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad#configure-a-jwt-validation-policy-to-pre-authorize-requests
2条答案
按热度按时间8iwquhpp1#
我没有添加
JWT validation policy to pre-authorize requests
要添加策略,请选择Design选项卡,然后单击Inbound Processing下的〈/〉图标(用于策略代码编辑器),然后添加以下代码:
保存后,提出新请求。
9cbw7uwe2#
我希望您已经配置了JWT策略,您能否确认一下?如果有人在没有标记或使用无效标记的情况下调用您的API?例如,尝试在没有Authorization头的情况下调用API,调用仍将通过。
这是因为API管理不验证访问令牌,它只是将授权头传递给后端API。
要预授权请求,可以通过验证每个传入请求的访问标记来使用策略。如果请求没有有效的标记,API管理将阻止它。
参考:https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad#configure-a-jwt-validation-policy-to-pre-authorize-requests