oauth-2.0 Azure API管理- oAuth不工作

olhwl3o2  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(244)

我正在尝试使用Azure API管理访问服务。我已通过使用API〉设置〉安全性并选择扩展oAuth 2.0在服务上启用了oAuth身份验证。但即使在进行此更改后,我也可以在不提供任何令牌的情况下访问终结点。我是否遗漏了什么?

8iwquhpp

8iwquhpp1#

我没有添加JWT validation policy to pre-authorize requests
要添加策略,请选择Design选项卡,然后单击Inbound Processing下的〈/〉图标(用于策略代码编辑器),然后添加以下代码:

<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>

保存后,提出新请求。

9cbw7uwe

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

相关问题