2017-05-01 25 views
-2

我想獲取訪問令牌以在我的Web窗體應用程序中調用某些apis,但我想說應用程序已經是一個大項目,而且我不想使用任何庫,我只想點擊一個按鈕,輸入名稱/密碼,並獲得訪問令牌,我想要做的只是在頁面代碼中,而不是任何其他可能影響整個項目的內容,例如安裝庫。在asp.net web窗體中獲取訪問令牌

+0

:好友,請開始學習API和訪問令牌。你會明白的。它不像一個小工作。 –

回答

0

我已經在網頁表單應用程序中完成了相關代碼示例,但您應該首先了解authorization code flow如何在AAD中工作。之後,您可以點擊here獲取代碼示例。你會發現在我的代碼中,我使用ADAL來使用授權碼獲取訪問令牌。你需要做的是通過修改AcquireTokenWithResource功能:

  1. 準備請求參數和發送POST請求/令牌端點。
  2. 反序列化json結果並獲取訪問令牌。你可以使用Newtonsoft.Json庫。

編碼過程中有任何問題,請隨時告訴我。

+0

你的代碼真的很有幫助!我遇到了重定向URL錯誤,但最終讓我的項目工作!謝謝! – Allen

1

代表用戶向Azure Active Directory獲取訪問令牌只需要遵循授權代碼授權流程。

儘管我們的庫非常簡單地完成(see here),但它們絕對不是必需的。

瞭解的OAuth 2協議在這裏:Authorize access to web applications using OAuth 2.0 and Azure Active Directory

內容的簡短摘要:

  1. 使用特定的密碼註冊一個AAD申請
  2. 有一個用戶登錄到你的應用程序包含有關您的應用程序標識信息的網址。

    https://login.microsoftonline.com/{tenant}/oauth2/authorize? client_id=6731de76-14a6-49ae-97bc-6eba6914391e &response_type=code &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F &response_mode=query &resource=https%3A%2F%2Fservice.contoso.com%2F &state=12345

  3. 這將返回一個授權碼重定向URI,您將需要交換訪問令牌:

    POST /{tenant}/oauth2/token HTTP/1.1 Host: https://login.microsoftonline.com Content-Type: application/x-www-form-urlencoded grant_type=authorization_code &client_id=2d4d11a2-f814-46a7-890a-274a72a7309e &code=AwABAAAA... &redirect_uri=https%3A%2F%2Flocalhost%2Fmyapp%2F &resource=https%3A%2F%2Fservice.contoso.com%2F &[email protected]

  4. 如果你做的一切成功,你應該現在擁有一個訪問令牌。現在就隨時致電您的API。 :)

+0

你的建議真的很有幫助,謝謝! – Allen