我一直在閱讀大量有關在Azure AD中使用OAuth的文檔,但我仍然完全困惑於如何正確實施我的情況。希望有人能引導我走向正確的方向。使用EWS託管API的Web API的正確OAuth2身份驗證流程
我已經創建了一個ASP.NET Web API應用程序,它使用EWS託管API代表不同用戶訪問Exchange。我的應用程序公開了端點,如/Mailbox/Messages
和/Appointments
,意圖是某些前端Web應用程序最終將使用它們來檢索用戶的電子郵件和約會。目前端點正在使用基本的http認證,但我想更新它們以使用OAuth。該應用程序已在我的Azure AD實例中註冊,並且已將其配置爲要求「通過Exchange Web服務訪問郵箱作爲已登錄用戶」API權限。
由於前端尚未實現,我一直試圖通過手動調用認證端點進行測試。這提示我登錄並提供同意。如果我同意,我將被重定向到我使用查詢參數中包含的授權代碼註冊應用程序時提供的回調URL。我仍然不太清楚應該如何使用此回調函數,但爲了測試目的,我現在使用回調函數將授權代碼兌換爲訪問令牌。這是通過在AuthenticationContext
類的實例上調用AcquireTokenByAuthorizationCode
方法並提供我的應用程序的ID和祕密來完成的。同樣,爲了測試的目的,我將訪問令牌返回給瀏覽器。然後,我可以使用此訪問令牌(經過一些修改)調用前述端點並獲取用戶的電子郵件。我猜這很多不是做事的正確方法。
我的一些困惑點:
- 我應該說我在Azure的AD註冊的回調實際上是這樣做時,它得到的授權碼?這是否適用於不同類型的應用程序?也許不只是扮演中間人的角色。
- 我試圖讓我的應用程序有些RESTful,所以我不想在請求之間維護我的端上的訪問令牌。因此,對於我的端點而言,期望每個請求的驗證頭中都提供訪問令牌是否有意義?如果是這樣,這是否意味着前端應用程序應負責獲取訪問令牌並將其傳遞給我?
作爲OAuth和Azure的全新手機,我不確定是否有其他細節是相關的,但我可以根據需要提供更多信息。