一直認爲 Azure 的設計過於複雜,權限要求過多,就感受是一羣技術宅作的系統。相對 AWS 來講,更加喜歡 AWS 的功能設計。api
可是由於工做須要又不得不使用 Azure,因此把使用過程當中遇到的一些問題都記錄下來,以指望能幫助有須要的人。服務器
這篇文章主要用於介紹如何使用 postman 來得到 Azure active directory 的用戶訪問 token,這個步驟是使用 Azure 對用戶鑑權使用的第一步。app
Azure 容許你有多個 tenant,你能夠在 Azure 的控制檯中對 tenant 進行切換,這個是你須要作的第一步。肯定你但願使用的 teant。ide
若是你尚未 tenant 的話,你須要建立一個 tenant。post
當找到你須要的 Tenant 之後,你會得到一個 tenant ID,這個很是重要。測試
由於這個表示的是你 AD 的惟一標識,因此你須要記錄下來。url
Tenant ID 在你界面中的的 Tenant Information 裏面設計
無論你使用任何類型的應用,你都須要先註冊一個 APP。3d
單擊左側的註冊 APP 按鈕。code
能夠單擊界面的上側,註冊一個新的應用。
在彈出的界面中,輸入註冊須要的相關信息。
註冊的名字你能夠自行定義,須要注意的是,你須要選擇:
Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)
這個註冊選項。
假設,咱們這裏註冊的應用是 WEB。
當你註冊成功後,你能夠單擊你的註冊名,而後你將會看到註冊的應用信息界面。
在這個界面中,你會獲得
Application (client) ID
Directory (tenant) ID
Object ID
這幾個參數,這幾個參數對你來講很是重要,你須要保存下來。
單擊左側的 Certificates & secrets,你將會看到密鑰生成的界面。
在這裏,你能夠單擊生成一個新的 Secret。
你能夠不用給這個 secret 進行命名,你也能夠命名你但願的名字。請注意將 secret 進行保存,由於下次你訪問的時候,secret 就不會再顯示了。
你須要肯定 Microsoft Graph 有用戶讀取的權限。
若是沒有這個權限的話,你須要單擊上面的添加權限來將權限添加進來。
選擇 Microsoft Graph 的選項,而後將用戶的權限添加進來。
你須要將你的 API 進行暴露,容許進行訪問。
你須要添加一個新的 Scope,在這裏咱們假設你添加了一個叫作 user.read 的 scope。
在彈出的界面中你能夠輸入你須要的選項。
你能夠選擇 Admins and users
這個配置參數你須要手動修改。
主要修改參數是:oauth2AllowImplicitFlow 修改成 true
至此,Azure 的配置已經完成了,下一步就是配置你的客戶端進行測試了。
能夠經過 Postman 進行測試得到 token。
你有 2 種方法進行測試,咱們測試的是不經過受權,直接經過 secret 來得到 token。
另外一種方法,咱們在其餘方式中再進行測試。
在 Postman 中添加一個 API 訪問。
使用 GET 進行訪問
訪問的 URL 是:https://login.microsoftonline.com/tenant ID/oauth2/v2.0/token
這裏有一個參數要進行替換,就是 Tenant ID,這個 ID 在開始的時候就用於標識一個 AD,咱們已經在前面的步驟保存了。
添加參數 Content-Type 爲 application/x-www-form-urlencoded
grant_type : client_credentials
client_id: 4ab1a0b7-da1d-423d-9fc3-e3a6fabd9
client_secret:SYk.HZT_jK6ZE1~3tle2Ha0MeV.9
scope: api://4ab1a0b7-da1d-423d-9fc3-e3a6fabd9/.default
這裏參數有一根鬚要注意的地方。
client_id 是咱們在最開始的時候 APP 建立成功後得到 client_id。
client_secret 是咱們咱們在 APP 註冊成功後,建立的祕鑰。
scope:是咱們建立的的 scop,可是須要注意的是,咱們建立的 scope 是以 user.read 結尾的,在咱們得到 token 的時候,不能使用上面結尾的 scope,而須要將 user.read 修改成 .default
所以 scope 的配置就是 api://client_id/ .default.
請注意,你必定要這麼配置,不然你拿不到 token
當一切配置好後,你能夠發送請求,若是一切正確的話,你將會看到服務器返回給你的 token 字符串。