2012年10月8日

[Azure]使用Windows Azure ACS與公司網路的AD做SSO整合–Part 1

我只能說…這真是一個漫長而充滿挑戰的過程…

首先, 準備一組AD環境來模擬公司網路的AD環境. 這邊我使用Windows Server 2012, 安裝AD DS, DNS, DHCP, Web Server在同一台機器上. 網域名稱是michaeldns.biz, Domain Controller電腦FQDN是pdc.michaeldns.biz.

由於目前還沒有要開始寫程式, 我只是單純地想要測試由Windows Azure ACS來整合內網的AD, 因此這邊我會先用一個根本不存在的網站來測試如何安裝與設定ADFS與Azure ACS, 預期是我應該要可以用預設的登入頁面來假裝要登入這個網站, 網站應該要向我要AD的帳密, 我驗證完成後, Azure應該要把我導到這個不存在的網站, 所以我雖然會得到一個HTTP 404錯誤, 但是應該要在IE上看到整個過程完成.

照著一般標準步驟做完dcpromo, 確定一切正常之後, 就可以準備安裝ADFS了.(這個步驟視情況大約需要1~2小時). 我在家裡的環境為了測試從外網接回AD Server大概多花了一個小時.

接著要來設定IIS的HTTPS憑證, 由於是測試, 這邊使用Self-Signed憑證來作為SSL連線使用的憑證. 進入IIS管理員, 左邊點選本台機器, 右邊雙擊Server Certificates

image

填上Friendly Name, 然後確定Certificate Store選到Personal後按確定即可

image

完成圖

image

 

接下來要開始安裝ADFS 2.0. 在2012 Server上安裝ADFS 2.0只需要從Server Manager中新增AD Federation Service這個Role就可以了, 安裝過程沒有甚麼需要特別注意的地方, 只要一直下一步就可以了 (不需要安裝ADFS 1.0相關的服務, 也不需要安裝ADFS Proxy). 安裝完成後可以在Server Manager的Dashboard上看到AD FS已經安裝完成

image

接著我們要來設定ADFS, 從這邊開啟ADFS管理員

image

點這裡開始設定

image

這裡直接按下一步, 因為現在是第一台ADFS伺服器

image

這邊可以選擇Standalone伺服器或是準備建立Federation Server Farm, 這裡我選擇Federation Server Farm然後按下一步

image

由於剛剛已經先設定好了IIS的SSL, 這裡系統會自動抓到剛剛設定的憑證, 按下一步.

image

我是重新安裝, 因此這裡可以把舊的資料庫刪除以確保都是新的資料

image

選擇Service Account, 如果是建立Server Farm的話, 所有的Service都需要使用這個帳號.

image

按下一步就會開始設定了

image

視情況會出現一兩個警告. 第一個是說host/[Computer FQDN]這個SPN已經存在了. 第二個是說因為有照到之前設定的ADFS網站, 因此安裝程式沒有再建立一個新的. 這邊可以直接忽略.

image

如此初步的設定就完成了, 稍後我們還會需要回來這裡做ADFS的設定.

現在, 讓我們到Windows Azure Portal上來設定ACS

進入舊版管理網站後, 先建立一個ACS Namespace. 建立的過程相當直觀, 選好區域跟名稱案確定就可以了, 我的測試namespace是MichaelVirtualNet

image

接著選擇剛剛建立的Namespace, 按存取控制服務

image

這會讓我們進入ACS管理介面, 首先新增一個Identity Provider

image

選擇新增一個WS-同盟識別提供者

image

輸入相關資訊. 在WS-同盟中繼資料的部分可以直接從我們剛剛設定的ADFS網站來下載. 其網址為https://[HOST IP]/FederationMetadata/2007-06/FederationMetadata.xml , 或是下載後儲存在以檔案的方式上傳. 設定完成後按儲存即可.

image

接下來要新增信賴憑證者應用程式

image

在這裡會需要填上實際上的應用程式的網址, 但是現階段我根本還沒有要開始寫東西, 我只是想先確定這整個架構是正常的, 因此這邊我先隨便填一個https://vnclient.com, 稍後我會把這一塊的程式補上

image

同一個畫面下半段的部分, 基本上只有識別提供者的部分需要視需求選擇, 這裡我選擇我的網站可以使用Windows Live ID, Google ID與我們的AD進行登入

image

儲存. 接下來要設定規則群組. 可以選擇新增, 或是修改剛剛系統幫我們產生的預設群組. 這裡我選擇修改預設群組

image

點擊群組名稱就可以進入設定畫面. 整個規則設定的邏輯大約是

如果[識別提供者]是[XXX], 且[輸入宣告型別]是[OOO], 且[輸入宣告值]等於[任何值]或是特定值.

把輸入型別轉型成我想要的型別, 並且值為前端傳遞過來的值或是特定值

說起來很繞口, 其實就是在做mapping而已.

這邊我們把識別提供者Google所傳過來的http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name 這個值, 轉換為http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name (也就是直接傳遞)

設定完成大概會是這樣

image

接著到應用程式整合, 把WS-同盟中繼資料這一段copy起來.

回到ADFS管理員, 點中間這個Link

image

跳過歡迎畫面後, 把剛剛那一段網址貼到這裡來然後按下一步

image

這邊選擇Permit all users to access this relying party

image

下一步到最後, 確定這裡有打勾

image

結束剛剛的精靈之後會自動帶出Edit Claim Rules的畫面, 按下的[Add Rules]

image

因為要整合AD, 這邊選擇Send LDAP Attributes as Claims

image

隨便給一個rule name, 在Attribute Store的地方選擇Active Directory. 然後Mapping of LDAP attribute to outgoing claim types的地方新增一筆把Token-Groups – Unqualified Name對應到Role的紀錄

image

按確定結束設定.

到這邊基本上已經設定完成了. 接著要來測試一下剛剛的設定是不是都正確.因為還沒開始部署程式, 所以我們先來借用ACS Portal上的範例登入畫面來測試.

image

下載後會看到剛剛設定的三個識別提供者都出現在列表裡, 其中Michael Virtual Net是我們的AD整合. 點她後會跳出AD驗證的登入視窗, 輸入ID Password後, 會看到IE網址列會開始詢問pdc.michaeldns.biz以及Azure ACS網址, 最後驗證完成之後, 就會把我們導向剛剛所設定的那個不存在的網址(http://vnclient.ocm). 到這邊應該可以認定設定應該都沒有問題了, 接下來就要實際上寫個程式放到雲端上來跟AD整合了.

image

沒有留言:

Blog Archive

About Me