[Memo]使用 Azure AD 的 Windows 認證方式–Localhost 的網站
以前一開始以為 Azure AD 和 Windiws 裡面的 AD 運作機制是一樣的,就是丟一個 Windows 權杖過去認證嘛。不過實際使用之後才發現跟本就是不一樣的東西,我反而還覺得跟 Facebook 認證方式比較接近。
建議可以看一下 Azure AD 的機制
- Azure AD 中簽署金鑰變換的相關重要資訊 – 了解 Azure AD 的簽署金鑰容錯移轉模式、對金鑰自動更新進行變更,及討論如何更新最常見的應用程式案例。
- Supported Token and Claim Types - 了解 Azure AD 發行之 Token 中的宣告。
- Federation Metadata - 了解如何尋找並解譯 Azure AD 產生的中繼資料文件。
- OAuth 2.0 - 了解 Azure AD 中的 OAuth 2.0 實作。
- OpenID Connect 預覽 - (預覽) 了解如何使用 OAuth 2.0 授權通訊協定進行驗證。
- SAML Protocol Reference - 了解 Azure AD 的單一登入和單一登出 SAML 設定檔。
- Troubleshooting Authentication Protocols - 了解使用 Azure AD 時,如何避免發生問題及解譯和解決錯誤。
會寫這個也是因為原本以為只要 10 分鐘就弄好,結果還是花了 2、3 小時才確定。而且 Azure 上面提供的 step by step 項目有二個版本
免得以後自已忘了
直接在 Portal 上選擇 Default Directory ,裡面已經有一個預設的網域名稱。只不過這裡預設會用 「名稱@電子信箱位置」的資料演變成「名稱+電子信箱.OnMicrosoft.com」。這個名稱記得 copy 下來等會 AP 認證會用到。
不過不用擔心,你還是可以用 公開的DNS 名稱來替換。
選擇下面的 功能列新增 User (以便等一下可以切換 )
若是要用將 Web 加入 Domain 認證的話,那麼登入的帳號必須是「全域管理員」
建立帳號 ( 當然也可以將 Microsoft ID 加入到網域中 )
記得記下來,等一下登入的 時候會用到要請你改密碼
接下來我們開啟 Visual Studio ( 這裡是使用 2015 ) ,新建立 ASP.NET MVC 5 的專案右邊有一個選擇可以決定帳號認證方式
將最一開始的那串網域名稱貼上
這裡用的帳號必須要有「全域管理員」
認證通過的話可以看到組織的認證網域名稱會在上面
接下來我們再回到 Azure AD 上,因為要跟 Azure AD 說明那些網站或是系統可以使用我們的認證,這裡沒有設定的話就算在自已的程式中有設定也無法使用
選擇 應用程式後按加入
這裡是選擇我正在開啟的應用程式
這個可以隨意輸入一個名稱 ,通常會選擇系統名稱
這裡非常非常地重要, URL 是 AD 認證完後要轉回的路徑,下面的 URI 則是系統的識別碼,若是測試用的 URI 名稱被使用掉的話,或是多人同時開發用同一個 AD 時請在後面加號碼或是人名的方式避開。
設定完成後記得再回到 ASP.NET 的 Web Config 這裡會有 Azure AD 相關的 Config 設定,請將剛剛的 URL 和 URI 路徑回填到這裡,若本地的 URL 不正確的話也無法使用。
剩下的就直接按下 F5 ,登登!可以看到 ASP.NET MVC 載入時會正確地轉址到 Azure AD 讓使用者輸入帳密,然後再轉址回到 自已的網站。