两个Web应用程序之间的Azure身份验

时间:2017-03-09 11:03:26

标签: ajax azure authentication

我在Azure中设置了两个Web应用程序,并且都支持Azure AD身份验证。 一个是前端,第二个是API后端。打开每个页面都可以很好地工作(登录屏幕),但是前端对后端的调用会导致被CORS策略阻止。消息是:

XMLHttpRequest无法加载hxxps://backend.azurewebsites.com/api。从hxxps://backend.azurewebsites.com/api重定向到hxxps://login.windows.net/94 ...已被CORS策略阻止:没有'Access-Control-Allow-Origin'标题出现在请求的资源。因此,不允许来源'hxxps://frontend.azurewebsites.net'访问。

调用如下:

$.ajax({
            type: type,
            dataType: 'json',
            url: server + '/' + url,
            crossDomain: true,
            xhrFields: {
                withCredentials: true
            },
            data: data
            }
        });

1 个答案:

答案 0 :(得分:0)

当呼叫未经身份验证时,API不应发送回重定向。调用者无法做任何有用的事情。

您应该在API上设置Azure AD Bearer令牌身份验证,并将Audience设置为API客户端ID,并将Tenant设置为Azure AD租户ID /域名。

然后你的前端应该以某种方式获得API的访问令牌,并将其附加到所有调用它的调用。有多种方法可以做到这一点。

您可以在此处找到单页应用示例:https://github.com/Azure-Samples/active-directory-angularjs-singlepageapp

此处有更多示例应用:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-code-samples