4、認證的相關內容——應用程序的權限認證

大家好,上次我們說了Graph API獲取認證的兩個方式之一的委託(用戶名密碼登錄)的認證方式,本次讓我們來說說應用程序權限的認證方法。

應用程序授權並不需要用戶身份進行登錄驗證,但它需要管理員對其進行授權。在大多數情況下,你僅需點擊Azure AD註冊應用中的按鈕進行授權:

但有時候,UI上的授權會不生效。想確保管理員一定對此應用進行了授權,可以訪問一下以下網址(以中國版Azure AD爲例):

https://login.chinacloudapi.cn/<Tenant ID>/adminconsent?client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&redirect_uri=http://localhost/

再次解釋一下:

  1. 基於Azure AD 2.0,你可以把Tenant ID寫爲common,另外,即使些Tenant ID,也不需要加尖括號,直接些GUID即可;
  2. client_id,不多解釋了,client_id就是註冊應用的應用程序 ID
  3. redirect_uri,又叫做重定向URI,在身份驗證中進行設置的,截圖如下:

當你輸入完成這樣一個網址後,瀏覽器訪問它,你會進入Azure AD的驗證界面,此時需要使用管理員進行登錄並授權:

當你點擊接收後,瀏覽器會把你導航到你的重定向URI中,當然這個頁面實際無所謂,重點是你已經爲你註冊的應用獲得到了管理員授權。也是就說此時,該應用(服務主體)已經確保獲得了無用戶參與登錄的訪問權限,並拿到了一些權限。

接下來的步驟比較簡單,應用程序獲取登錄認證不需要委託的認證那樣,存在code這個中間量。而是直接去獲取Access Token。

在給應用程序授予了管理員許可後,即可開始請求Access Token的過程。在應用程序的認證中申請憑證也需要POST http方法,即通過PostMan等工具或代碼進行執行來實現。

具體的請求方法爲(以中國版Azure AD舉例):

https://login.partner.microsoftonline.cn/<Tenant ID>/oauth2/token,當然,還是可以將Tenant ID修改爲common,Body中要填寫的內容如下表:

名稱

說明

client_id

應用程序ID

你註冊應用的應用程序ID

grant_type

client_credentials

固定填寫

scope

https://microsoftgraph.chinacloudapi.cn/.default

固定格式,必須填寫。國際版值爲https://graph.microsoft.com/.default

client_secret

證書與密碼中,客戶端密碼的值

必須填寫。你可以隨時在證書與密碼中重新申請。

resource

源,中國版請填寫https://microsoftgraph.chinacloudapi.cn

該地址只在連接中國版時需要且必須,如連接國際版,勿添加此參數

 

如果不出意外的話,你會得到類似如下反饋:

{

    "token_type""Bearer",

    "expires_in""3599",

    "ext_expires_in""3599",

    "expires_on""1585623335",

    "not_before""1585619435",

    "resource""https://microsoftgraph.chinacloudapi.cn",

"access_token""eyJ0eXAiOiJKV1QiLCJub25jZSI6Ii……

}

你會發現,與通過用戶名密碼登錄的情況不同,Azure AD只返回了access Token,當然這對應用程序來說也夠用了,有關其他Token的情況,我還是留到下次再說吧。代碼這次就不留了,和上次用戶名密碼通過code申請憑據的差不多,無非都是POST方法。

剩下的就是帶着這個Token去調用API了,簡單說明一下,你可以使用POSTMAN、Fiddler之類的工具,也可以開發完成。

POSTMAN中的測試極爲簡單,在Authorization 中,TYPE選爲Bearer Token,將剛剛獲取的Access Token粘貼在Token中,你可以去調用一個非常簡單的API,如列出用戶:

謝謝大家花時間閱讀,下次我們講一下之前漏掉的一些說明和情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章