關鍵字:azure hashicorp vault ad oidc
基本概念:
azure AD: 一種授權方式。
application:添加一個web app 到azure上 以便使用azure賬號單點登錄,同時可以在myapp中看到這個app,直接點擊即可登錄
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
實踐一:在vault 登錄頁面直接登錄vault,不輸入任何東東,前提是把vault 綁定到azure上。方法是azure AD oidc。
參考:
https://www.vaultproject.io/docs/auth/jwt.html#jwt-authentication
https://www.vaultproject.io/docs/auth/jwt_oidc_providers.html
https://beez.ly/2018/07/25/authenticating-azure-users-with-hashicorp-vault.html
https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-protocols-oidc
原理:在azure上註冊該app,然後創建一個secret key,綁定reply url。然後在vault server內使用azure上創建的secret key,application id等進行配置,表示vault 允許azure替vault 分配credential(比如token)。這個secret key是azure生成的,類似於linux的public key,我給你一個暗號,當你要用的時候,告訴我暗號你就可以直接使用了。這個暗號就是azure 分配credential功能的鑰匙。只要註冊了app,都可以用。
實操:只需要在vault登錄界面直接選oidc然後填role直接登錄即可。
內部原理:當點擊登錄時,vault會自動把地址轉向azure的特殊網址(專門用來分配credential的),這個網址提前在vault上配置好(https://sts.windows.net/tenant_id/),tenant_id就是你azure賬戶裏的tenant id。獲得token後,這個網址又會自動轉到vault的另一個叫callback的網址,網址對返回的token(實際是code形式,不是id_token)進行處理並傳給登錄界面,然後自動登錄成功,就這麼點破事兒,不知道是我理解力差還是azure文檔太糙。看了好半天才弄明白。
具體配置:
azure側:註冊app,生成secret key,填寫vualt文檔內的reply url(固定格式)
vault側:enable oidc ,然後configure,那個discovery url就是azure上提供的,實際是上面那個,azure文檔tm的寫的是另一個,十分奇葩。說創建新的就用新的,實際創建新的還是舊的。 然後創建role role的路徑就是auth/oidc/role/xxxx,參數除了policy之外還必須有那個redirect uri,還有一個user claim,azure的話就寫upn。
azure上的token如果想解析出來看看都有啥,可以這樣:在linux內把token粘到一個文檔內,然後使用命令cat jwt.json | cut -d. -f2 | base64 -d 這個命令是使用base64把 jwt.json上的內容解密出來。中間那個命令,母雞
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>