客户端凭据请求期间没有 'Access-Control-Allow-Origin' Header 错误

No 'Access-Control-Allow-Origin' Header error during Client Credentials Request

我需要为后台服务启用 API 访问权限,这样它就不需要用户手动登录。应用程序写在 Javascript ( Angular ).

我已按照以下 this article 中的同意流程/访问令牌步骤进行操作,但我收到 CORS 错误。

管理员同意确认 - 工作

访问令牌请求 - 失败

同意returns我用于下一步的租户

let payload = {
    client_id: 'CLIENT_ID_HERE',
    scope: 'https://graph.microsoft.com/.default',
    client_secret: 'CLIENT_SECRET_HERE',
    grant_type: 'client_credentials'
};
$http.post('https://login.microsoftonline.com/' + tenant + '/oauth2/v2.0/token', payload);

如有任何帮助,我们将不胜感激。

首先,不要将客户端机密放在前端JavaScript

客户端凭据授予流程不适用于前端。这就是您收到 CORS 错误的原因。

您需要为您的应用启用隐式授权流程。在这里查看:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols-implicit.

然后您可以在 AAD 的第一个响应中获得访问令牌。或者您可以通过隐藏的 iframe 请求它。 Msal.js 在这里可以帮到你很多:https://github.com/AzureAD/microsoft-authentication-library-for-js.