gpt4 book ai didi

angular - 在 Azure Active Directory 上启用 CORS

转载 作者:行者123 更新时间:2023-12-02 23:01:33 25 4
gpt4 key购买 nike

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

    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)

我能够在 Postman 中通过此 url 检索访问 token ,但在通过我的应用程序调用它时被 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.

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

最佳答案

很简单,你不会。

您所做的是将您的应用程序的客户端 secret 公开给公众。请记住,请求将从用户的设备发出。这样他们就可以观察并捕获您的 secret 。这就是 token 端点不支持 CORS 的原因,而且可能永远不会支持。

更新:如果您使用 SPA 平台配置回复 URL, token 端点现在支持 CORS。这允许将授权代码流与 PKCE 一起使用。 MSAL.js 2.0 支持此流程。请注意,这仍然不涉及客户端 secret 。

从前端JS应用程序获取 token 的方法是使用带有PKCE的隐式授权流程或授权代码流程。或者,如果您确实需要仅应用程序 token ,那么您必须从后端应用程序执行您尝试的请求。

隐式授权流程允许您在用户登录时直接从授权端点获取 token 。您可以使用 ADAL.JS/MSAL.JS 来协助完成此操作。如果没有用户身份,您就无法拥有 token ,因为您的 native 应用程序无法证明其身份。

关于angular - 在 Azure Active Directory 上启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52839055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com