来自'https://login.microsoftonline.com/xxx from origin'http:// localhost:4200'的XMLHttpRequest访问权限已被CORS政策阻止

问题描述 投票:0回答:1

似乎是一个重复的问题,但无法解决它。我有角度6应用程序,使用Msal强制用户登录。成功登录后,我正在向aad的令牌端点发送请求,传递服务主体凭据(应用程序的应用程序ID和客户端密钥)以获取访问令牌以访问图形API,如上所述here。这是我收到CORS策略错误的地方。

当我禁用chrome浏览器安全性时,我没有收到任何CORS错误并且能够获得访问令牌。

为什么只有当我尝试使用服务主体凭据获取访问令牌而不是使用msal的用户登录时才会收到CORS错误?

我是否需要在浏览器端使用任何脚本才能使其正常工作?

如何在不影响安全性的情况下实现它?

登录权限是:https://login.microsoftonline.com/ {tenant id} /

服务主体的令牌端点是:https://login.microsoftonline.com/ {tenant id} /oauth2/v2.0/token

angular active-directory azure-active-directory microsoft-graph msal
1个回答
1
投票

通常,传统或常规网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受到相同原始策略的限制。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。虽然邮差可以处理这种请求,因为它们不受此政策的限制。

为了在javascript中集成Azure Active Directory,它推荐使用azure-active-directory-library-for-js,它是javascript中的一个库,用于通过使用implicit grant flow轻松集成azure活动目录,它还具有消除对跨源调用的任何要求的优势,如果需要JavaScript应用程序联系令牌端点,则必需。你也可以看看Here是一个讨论相同主题的线程,并展示了如何使用MSAL.JS的更多信息,请参考。

您还可以在java脚本here中查看客户端请求模式。我相信上面提到的过程可能对你有帮助。

有关详细信息,请阅读以下内容:

MSAL Single page application

执行ADAL

Single page application using MSAL for B2C

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.