2017-07-03 101 views
0

我有使用React和Web API構建的單頁面應用程序(SPA),這兩個應用程序託管在Azure的App Service上。身份驗證由Azure AD提供。如何使用Azure Easy Auth獲取訪問令牌?

我一直在使用JavaScript的Active Directory認證庫(ADAL)。雖然所有示例都是關於Angular的,但我已經設法使用React應用程序的純JavaScript版本庫。我已經使用OAuth2隱式授權流程通過SPA對Web API進行了認證訪問。

一切正常與ADAL,但這種方法需要你有一個登錄和註銷機制(例如通過按鈕)。授權代碼作爲一個片段添加到URL中,ADAL方便地完成其餘部分。但是,我希望整個應用程序都是安全/認證的,因此我已經設置了「簡單認證」 - 通過應用程序服務進行認證。

使用「Easy Auth」時,您登錄到應用程序,但URL中沒有返回片段,因此ADAL無法用於獲取API的訪問令牌。

當使用「簡單驗證」時,獲得訪問令牌(如隱式授予所需的令牌)的最佳方式是什麼?有沒有辦法將ADAL合併到「Easy Auth」流程中?

謝謝。

回答

0

如果您將單頁應用程序和Web API部署到同一個Azure的應用程序服務中並使用Easy Auth保護應用程序服務,則無需在單頁應用程序中使用adal來立即調用Web API。

在這種情況下,您可以通過服務器流程登錄應用服務,然後您可以直接調用Web API,因爲Easy Auth將通過Cookie驗證請求。如果Web API還使用令牌來服務其他客戶端,則需要使用Azure AD應用程序獲取id_token/access_token,從而保護應用程序服務並使用Azure AD頒發的id_token/access_token交換身份驗證令牌。這一進程被稱爲客戶端流程。

關於這兩個流程的更多細節,可以參考鏈接here