在Azure Active Directory上启用CORS

kg1*_*123 1 azure cors typescript azure-active-directory angular

我试图在Angular 6应用程序中使用以下方法以编程方式从Azure Active Directory获取访问令牌。

    let body1 = new FormData()
    body1.append("resource", environment.config.clientId)
    body1.append("grant_type", "client_credentials")
    body1.append("client_id", environment.config.clientId)
    body1.append("client_secret", "*****")

    return this._http.post("https://login.microsoftonline.com/" + environment.config.tenant + "/oauth2/token", body1)
Run Code Online (Sandbox Code Playgroud)

我能够通过Postman中的此URL检索访问令牌,但是在通过我的应用程序调用它时被CORS阻止。错误如下。

    Failed to load https://login.microsoftonline.com/*****/oauth2/token: 
Response to preflight request doesn't pass access control check: No 'Access-
Control-Allow-Origin' header is present on the requested resource. Origin 
'http://localhost:4200' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

因此,如何在Azure Active Directory上为所有域启用CORS?

juu*_*nas 6

很简单,您不需要。

您正在做的是向公众公开您应用的客户秘密。请记住,该请求将通过用户的设备发出。这样他们就可以观察并捕获您的秘密。这就是令牌终结点不支持CORS且可能永远不支持的原因。

从前端JS应用程序获取令牌的方法是使用隐式授予流。或者,如果您确实需要仅应用程序的令牌,则必须从后端应用程序发出您尝试过的请求。

隐式授予流使您可以在用户登录时直接从授权端点获取令牌。您可以使用ADAL.JS / MSAL.JS进行协助。如果您的本机应用无法证明其身份,那么没有用户身份的令牌就不能拥有。

  • 嗯...如果要在浏览器上使用PKCE流,应该怎么办?隐式流程是否没有从推荐的最佳实践中删除? (2认同)