logo头像

Edward.K Thinking

用Azure AD帳號作為登入Azure Web Site之驗證機制

通常網站登入我們都會設定登入帳號或是第三方驗證方式登入,如果,今天想要透過用戶本身的AAD帳號作為登入呢?且有不想要寫太多太多驗證帳號程式(基本上是不需要寫啦),就能達到這樣需求。下面實作方式,是使用OS是Windows的Azure Web進行。

應用程式註冊


首先必須先到Azure AD註冊你的APP


註冊部分,就輸入這個註冊App名稱,同時,選擇僅此組織目錄中的帳戶,同時,最困難的地方,就是在重新導向那地方要怎樣填寫,雖然說寫選用,但要做到AAD驗證功能,這部分還是需要填寫的


要填寫重新導向 URI這部分,就直接填寫建立好Web Site的URL,記得要用有https,不能是http

1
https://mylogintest.azurewebsites.net/

當這個應用程式被註冊完畢後,要到驗證地方填入重新導向 URI,這個地方是不能亂寫的,如果驗證是自己客製化的,就是另當別論


如果是採用AAD做認證,它設定必須要跟下面字串是相同的,以案例中,Web 網站網址是 mylogintest.azurewebsites.net,填寫方式就是在網址後面加上.auth/login/aad/callback,完整結果如下:

1
https://mylogintest.azurewebsites.net/.auth/login/aad/callback

在應用程式註冊地方,大致上就完成了

設定Web App 的驗證與授權



開啟驗證與授權,並且在未經驗證時所要採取的動作那邊選用AAD作為登入,當然如果今天這個是非公司內部系統,也可以選擇像是Microsoft帳號或是Facebook帳戶去做驗證。因為我們要做是公司AD Account驗證,所以必須使用Active Directory驗證。點選Active Directory驗證


進入Active Directory設定畫面,選擇進階,為什麼需要到進階呢?如果,今天這個Web Site不單單只有組織內的AAD要存取,也包含了要讓組織外的AAD也可以做驗證的動作時候,就必須透過進階設定來做設定


就要開始填入相關資訊,這些資訊都是可以在剛剛AAD那邊註冊程式的名字內找到,像是我們剛剛註冊程式名字叫做mylogintest,因此詳細資訊是…

  • 用戶端識別碼: 到註冊程式中找到應用程式 (用戶端) 識別碼,填入到此,或是透過應用程式註冊上面的端點,找到同盟中繼資料,點入後,找到entityID,通常在第一行,也可以取得簽發者URL

  • 發行者URL: 這裡就直接填寫https://sts.windows.net/xxxxxx/,其中的XXXXXX,所要填寫的資訊就是目錄 (租用戶) 識別碼,這資訊也可以從註冊程式中找到,基本上只要在同一個AAD裡面的目錄 (租用戶) 識別碼都是相同的。

設定完成後,去執行剛剛那個Web App網址,會出現You do not have permission to view this directory or page.這個錯誤,表示你沒有權限可以訪問這個網站


通常會發生這問題,表示設定可能有地方出問題,必須再檢查一下,目前這作法,可以確保是組織內的AAD可以驗證通過,但是還不能保證可以現在那些人員可以造訪這個網站。換句話說授權部分還是需要透過application撰寫


另外一點,也必須確認這個註冊的應用程式,有被開啟為使用者啟用登入登入的功能


到這邊,就已經可以用AAD登入,後續再搭配程式,就可以抓到登入者的AAD帳號

上一篇