似乎是一个重复的问题,但无法解决它。我有角度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
通常,传统或常规网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受到相同原始策略的限制。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。虽然邮差可以处理这种请求,因为它们不受此政策的限制。
为了在javascript中集成Azure Active Directory,它推荐使用azure-active-directory-library-for-js,它是javascript中的一个库,用于通过使用implicit grant flow轻松集成azure活动目录,它还具有消除对跨源调用的任何要求的优势,如果需要JavaScript应用程序联系令牌端点,则必需。你也可以看看Here是一个讨论相同主题的线程,并展示了如何使用MSAL.JS的更多信息,请参考。
您还可以在java脚本here中查看客户端请求模式。我相信上面提到的过程可能对你有帮助。
有关详细信息,请阅读以下内容:
执行ADAL
Single page application using MSAL for B2C
谢谢。