簡體   English   中英

在 Azure Active Directory 上啟用 CORS

[英]Enabling CORS on Azure Active Directory

我正在嘗試在 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)

我能夠通過 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.

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

很簡單,你沒有。

您正在做的是向公眾公開您的應用程序的客戶端機密。 請記住,請求將從用戶的設備發出。 所以他們可以觀察它並捕獲你的秘密。 這就是令牌端點不支持 CORS 並且可能永遠不會支持的原因。

更新:令牌端點現在支持 CORS,如果您使用 SPA 平台配置回復 URL。 這允許將授權代碼流與 PKCE 一起使用。 MSAL.js 2.0 支持此流程。 請注意,這仍然不涉及客戶端機密。

從前端 JS 應用程序獲取令牌的方法是使用帶有 PKCE 的隱式授權流或授權代碼流。 或者,如果您確實需要一個僅限應用程序的令牌,那么您必須執行您從后端應用程序嘗試的請求。

隱式授權流允許您在用戶登錄時直接從授權端點獲取令牌。您可以使用 ADAL.JS/MSAL.JS 來協助完成此操作。 您不能擁有沒有用戶身份的令牌,因為您的本機應用程序無法證明其身份。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM