一直認為 Azure 的設計過於複雜,許可權要求過多,就感覺是一群技術宅做的系統。相對 AWS 來說,更加喜歡 AWS 的功能設計。
但是因為工作需要又不得不使用 Azure,所以把使用過程中遇到的一些問題都記錄下來,以期望能幫助有需要的人。
這篇文章主要用於介紹如何使用 postman 來獲得 Azure active directory 的使用者訪問 token,這個步驟是使用 Azure 對使用者鑑權使用的第一步。
確定 tenantAzure 允許你有多個 tenant,你可以在 Azure 的控制檯中對 tenant 進行切換,這個是你需要做的第一步。確定你希望使用的 teant。
如果你還沒有 tenant 的話,你需要建立一個 tenant。
當找到你需要的 Tenant 以後,你會獲得一個 tenant ID,這個非常重要。
因為這個表示的是你 AD 的唯一標識,所以你需要記錄下來。
Tenant ID 在你介面中的的 Tenant Information 裡面
註冊 APP不管你使用任何型別的應用,你都需要先註冊一個 APP。
可以單擊介面的上側,註冊一個新的應用。
在彈出的介面中,輸入註冊需要的相關資訊。
註冊的名字你可以自行定義,需要注意的是,你需要選擇:
Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)這個註冊選項。
假設,我們這裡註冊的應用是 WEB。
獲得基本引數當你註冊成功後,你可以單擊你的註冊名,然後你將會看到註冊的應用資訊介面。
在這個介面中,你會得到
Application (client) IDDirectory (tenant) IDObject ID這幾個引數,這幾個引數對你來說非常重要,你需要儲存下來。
設定 secrets單擊左側的 Certificates & secrets,你將會看到金鑰生成的介面。
在這裡,你可以單擊生成一個新的 Secret。
你可以不用給這個 secret 進行命名,你也可以命名你希望的名字。請注意將 secret 進行儲存,因為下次你訪問的時候,secret 就不會再顯示了。
API 賦權你需要確定 Microsoft Graph 有使用者讀取的許可權。
如果沒有這個許可權的話,你需要單擊上面的新增許可權來將許可權新增進來。
選擇 Microsoft Graph 的選項,然後將使用者的許可權新增進來。
暴露 API你需要將你的 API 進行暴露,允許進行訪問。
你需要新增一個新的 Scope,在這裡我們假設你添加了一個叫做 user.read 的 scope。
在彈出的介面中你可以輸入你需要的選項。
你可以選擇 Admins and users
修改 Manifest這個配置引數你需要手動修改。
主要修改引數是:oauth2AllowImplicitFlow 修改為 true
至此,Azure 的配置已經完成了,下一步就是配置你的客戶端進行測試了。
Postman 測試可以通過 Postman 進行測試獲得 token。
你有 2 種方法進行測試,我們測試的是不通過授權,直接通過 secret 來獲得 token。
另一種方法,我們在其他方式中再進行測試。
在 Postman 中新增一個 API 訪問。
訪問方法使用 GET 進行訪問
訪問 URL訪問的 URL 是:https://login.microsoftonline.com/tenant ID/oauth2/v2.0/token
這裡有一個引數要進行替換,就是 Tenant ID,這個 ID 在開始的時候就用於標識一個 AD,我們已經在前面的步驟儲存了。
Headers新增引數 Content-Type 為 application/x-www-form-urlencoded
Bodygrant_type : client_credentialsclient_id: 4ab1a0b7-da1d-423d-9fc3-e3a6fabd9client_secret:SYk.HZT_jK6ZE1~3tle2Ha0MeV.9scope: 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 字串。