azure - 401 未经授权 - 调用启用了 AD 身份验证的 Azure API

标签 azure azure-api-apps

我有一个托管在 Azure 中的 API,启用了 AD 身份验证。浏览 URL 时,它要求进行身份验证,并且在输入凭据时,API 工作正常。但是,当使用具有 Basic 身份验证和 Oauth2 身份验证方法的 Get 方法调用 Postman 应用程序中的 API 时,会出现 401 未经授权的错误。

已获取客户端 ID、 key 、租户 ID。

广告应用程序中的 APP URI 与网络应用程序 URL 相同,但不以“/”结尾。 已授予广告应用中API的登录和读取权限。

$.ajax({
    "async": true,
    "crossDomain": true,
    "url": "https://login.microsoftonline.com/tenantID/oauth2/token",
    "method": "POST",
    "headers": {
        "Accept": "*/*",
        "Cache-Control": "no-cache",
        "content-type": "application/x-www-form-urlencoded"
    },
    "data": {
        "grant_type": "client_credentials",
        "client_id ": "********************",
        "client_secret": "********************",
        "scope ": "https://graph.windows.net"
    },
    success: function (response) {
        console.log(response);
        token = response.access_token;
        $.ajax({
            url: "https://azure.azurewebsites.net/api/example",
            type: "GET",
            "async": true,
            "crossDomain": true,
            dataType: "json",
            useDefaultXhrHeader: false,
            headers: {
                "Accept": "*/*",
                "Cache-Control": "no-cache",
                "content-Type": "application/json;odata=verbose",
                "authorization": "Bearer " + response.access_token
            },
            success: function (data) {
                console.log(data);
            }
        });
    }
});

在为 Web 应用程序配置 AD 应用程序时我是否遗漏了任何内容?另外,上面的代码用于获取访问 token 并使用该访问 token 调用 API。 任何帮助深表感谢。

提前致谢

最佳答案

获取访问 token 的参数不正确。由于您想使用 v1.0 端点来访问您的 web 应用程序,因此您应该使用 resource 参数而不是 scope,并且该值应该与 client_id 相同。另外,您不应该使用 client credential flow在前端。

enter image description here

关于azure - 401 未经授权 - 调用启用了 AD 身份验证的 Azure API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60986350/

相关文章:

azure - 如何远程桌面到Azure App?

azure-functions - Azure 函数代理返回错误 500

azure - 将 Azure Blob 存储文件名保存到 Sql 表 - Azure 数据工厂

asp.net-mvc - OWIN - Authentication.SignOut() 不会删除 cookie

Azure API应用程序代理生成错误

c# - Azure API App 客户端不生成枚举

azure - 如何对 Microsoft 发出的有关更新 API 的消息使用react

azure - 使用 .NET Core(API 和 HTTP)创建 Azure AD 应用程序和服务主体

azure - 如何绕过 Azure 队列的最长生存时间?

Azure ARM 模板、站点的 VNET 集成