叢 林
計算機技術(shù)的發(fā)展改變著人們的生活方式:互聯(lián)網(wǎng)的出現(xiàn)加速了信息的傳遞;操作系統(tǒng)使工作,生活,學習更加的高效;現(xiàn)在,云計算來了,她的出現(xiàn)使公司的成本支出減少,同時提高了公司的生產(chǎn)力和可靠性。在云應用方面,Microsoft, IBM, Google都推出了自己的產(chǎn)品,Microsoft 的Office 365, IBM的Live Notes, Google的Google APPs。
與其他產(chǎn)品相比,Office 365 中國運營為國內(nèi)客戶提供在線辦公、電子郵件、門戶協(xié)作、統(tǒng)一通訊等服務(wù)。Office 365的真正優(yōu)勢在于其功能類型多樣,如語音、電話會議、文件協(xié)作、電子郵件、日歷等,擁有員工需要的一切。此外,Office 365可以與 Outlook、SharePoint、Office、Exchange、Lync和微軟其他產(chǎn)品的本地模式協(xié)作。
公司現(xiàn)有的本地驗證體系和云端驗證體系彼此孤立。導致多賬號和無法統(tǒng)一管理的問題。比如:一個叫“小麥”的用戶,在本地有自己的用戶名和密碼。同時,在云端也有自己用戶名和密碼。這兩個用戶名和密碼是不同的,如圖1所示:
問題1:小麥需要記憶兩個用戶名和復雜的密碼。
問題2:小麥無法統(tǒng)一管理兩個用戶名和密碼。
如何在本地環(huán)境和云環(huán)境(Office 365)共存的情況下,實現(xiàn)本地環(huán)境和云環(huán)境(Office 365)的統(tǒng)一身份驗證?為了更好的和本地環(huán)境做整合和聯(lián)盟,我們需要實現(xiàn)本地和云端的統(tǒng)一身份驗證。首先,我們來介紹一下統(tǒng)一身份驗證---SSO.
SSO英文全稱Single Sign On,單點登錄。SSO是在多個應用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)。它包括可以將這次主要的登錄映射到其他應用中,用于同一個用戶的登錄的機制。它是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。當用戶第一次訪問應用系統(tǒng)1的時候,因為還沒有登錄,會被引導到認證系統(tǒng)中進行登錄;根據(jù)用戶提供的登錄信息,認證系統(tǒng)進行身份校驗,如果通過校驗,應該返回給用戶一個認證的憑據(jù)-ticket;用戶再訪問別的應用的時候就會將這個ticket帶上,作為自己認證的憑據(jù),應用系統(tǒng)接受到請求之后,會把ticket送到認證系統(tǒng)進行校驗,檢查ticket的合法性。如果通過校驗,用戶就可以在不用再次登錄的情況下訪問應用系統(tǒng)2和應用系統(tǒng)3了。
要實現(xiàn)SSO,需要以下主要的功能:
(1)所有應用系統(tǒng)共享一個身份認證系統(tǒng): 統(tǒng)一的認證系統(tǒng)是 SSO的前提之一。認證系統(tǒng)的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證;認證成功后,認證系統(tǒng)應該生成統(tǒng)一的認證標志(ticket),返還給用戶。另外,認證系統(tǒng)還應該對ticket進行校驗,判斷其有效性。
(2)所有應用系統(tǒng)能夠識別和提取ticket信息。要實現(xiàn)SSO的功能,讓用戶只登錄一次,就必須讓應用系統(tǒng)能夠識別已經(jīng)登錄過的用戶。應用系統(tǒng)應該能對ticket進行識別和提取,通過與認證系統(tǒng)的通訊,能自動判斷當前用戶是否登錄過,從而完成單點登錄的功能。
但是實現(xiàn)本地環(huán)境和云環(huán)境(Office 365)的統(tǒng)一身份驗證時,我們遇到了問題。用戶的信息在本地活動目錄中,這是云端無法訪問的。如何讓兩個不同的領(lǐng)域建立聯(lián)系?
2.2.1.WS-Federation是一種機制。
用來實現(xiàn)不同領(lǐng)域之間的身份、屬性、驗證的聯(lián)盟。她是一種身份聯(lián)盟的規(guī)則, 由 BEA Systems, BMC Software,CA, Inc., IBM, Layer 7 Technologies, Microsoft, Novell, Ping Identity, and VeriSign公司共同開發(fā)。我們通過使用WS-Federation技術(shù),實現(xiàn)現(xiàn)有本地環(huán)境和云環(huán)境的統(tǒng)一身份驗證。在本地和云端分別安裝一臺服務(wù)器作為聯(lián)盟服務(wù)器.本地聯(lián)盟服務(wù)器從活動目錄中驗證賬號,同時和云端聯(lián)盟服務(wù)器建立聯(lián)系。實現(xiàn)統(tǒng)一身份驗證在微軟云環(huán)境中的應用。
這個WS-Federation 規(guī)則,允許為不同安全領(lǐng)域建立聯(lián)盟,從而實現(xiàn)了不同安全聯(lián)盟之間的安全接入。使用了WS-Federation,可以簡單化安全領(lǐng)域之間的聯(lián)盟,如圖2所示:
圖2 聯(lián)盟信任
2.2.2 WS- Federation 特性:
(1)聯(lián)盟元數(shù)據(jù)- 當一個組織要建立聯(lián)盟,聯(lián)盟中的參與者需要建立一些服務(wù)和規(guī)則,這樣可以讓參與者接入聯(lián)盟。為了實現(xiàn)這個目的,WS- Federation引入了元數(shù)據(jù)的概念。元數(shù)據(jù)模式描述聯(lián)盟元數(shù)據(jù)相關(guān)的服務(wù)如何發(fā)現(xiàn)和整合的。元數(shù)據(jù)聯(lián)盟文檔描述一個服務(wù)如何參加在聯(lián)盟和在聯(lián)盟中被使用。
(2)授權(quán)服務(wù)- 提供決定中間人服務(wù),被用于聯(lián)盟中的用戶建立連接。
(3)授權(quán)類型- 用于定義一些常用的驗證類型和等級用于RST 和RSTR信息。
(4)屬性服務(wù)- 一個已經(jīng)接入聯(lián)盟的參與者,需要額外的信息,這是就需要屬性服務(wù)??梢酝ㄟ^安全令牌服務(wù)和令牌信任協(xié)議接入屬性服務(wù)。
(5)聯(lián)盟登出—聯(lián)盟登出的目的是顯示給一個參與者,這個特殊的聯(lián)盟已經(jīng)被中斷了??梢郧宄@個緩存狀態(tài)。
(6)Web (被動)請求—用于瀏覽器或者Web 服務(wù)客戶端的聯(lián)盟請求。支持 HTTP 1.1 機制 (GET, POST, redirects, and cookies).
在微軟云環(huán)境 Office 365中,我們引入了活動目錄聯(lián)盟服務(wù)器Active Directory Federation Server (ADFS)和在線目錄同步服務(wù)器MS Online Directory Sync Server。他們實現(xiàn)了本地環(huán)境和云環(huán)境(Office 365)統(tǒng)一登陸和共同管理。
3.1 ADFS通過使用WS-Federation技術(shù)提供給用戶統(tǒng)一登錄體驗。允許使用本地活動目錄賬號登錄云端(Office 365)。在本地和云端分別ADFS服務(wù)器,實現(xiàn)統(tǒng)一登錄。
比如:一個叫“小麥”的用戶,我們只要使用本地賬號就可以登陸本地和云端環(huán)境。具體原理圖,如圖3所示:
圖3 ADFS原理圖
3.2 Directory Synchronization (DirSync)Server[5][6]通過本地“活動域名用戶和電腦工具(ADUC)”管理所有用戶賬號(云端和本地)。具體原理:Dirsync在微軟云服務(wù)中具體的實現(xiàn)方法,通過安裝DirSync服務(wù)器把本地賬號同步到云端,如圖4所示:
圖4 DirSync原理圖
(1)本地活動目錄信息到DirSync服務(wù)器
(2)信息從DirSync服務(wù)器到云端服務(wù)器
被動請求和重定向流程(用于Web-base的請求)
主動請求和重定向流程(用于客戶端)
被動請求和重定向流程(是被WS-Federation定義的,用于支持網(wǎng)頁方式請求。網(wǎng)頁方式請求被認為是被動請求應為最早的請求是直接指向云端的. 被動請求和重定向流程是ADFS中最常用的情況,如圖5所示:
圖5 被動請求和重定向流程(用于Web-base的請求)
(1)客戶端通過網(wǎng)頁方式訪問 Microsoft Online Service主頁 Http://portal.microsoftonline.com. 這個網(wǎng)頁會要求客戶提供認證.
(2)客戶端會被重定向到 Microsoft Federation Gateway(MFG)這是云端的聯(lián)盟服務(wù)器。為了獲得一個登錄的認證,MFG 會重定向客戶端到本地的聯(lián)盟服務(wù)器AD FS 2.0 服務(wù)器。
(3)客戶端連接到本地的AD FS 2.0服務(wù)器,客戶被要求提供身份驗證。
(4)ADFS 2.0 Server 在本地活動目錄里,驗證用戶名和密碼。如果通過驗證,會把本地的賬號和云端的客戶做一個映射。
(5)本地活動目錄把結(jié)果返回給AD FS 2.0服務(wù)器,同時確認用戶身份。
(6)AD FS 2.0服務(wù)器返回一個登錄認證給客戶端。
(7)客戶端把這個登錄認證發(fā)給 MFG, MFG 解密這個認證,驗證她,然后返回一個被簽署的認證給客戶端。
(8)客戶端把這個認證發(fā)給云端。這個認證被一個公鑰簽發(fā),只有Office 365有對應的私鑰。
主動請求可以自己獲得認證??蛻舳藭苯舆B到Microsoft Federation Gateway (MFG), 然后被重定向AD FS 2.0 服務(wù)器獲得認證. 實現(xiàn)主動請求是通過在客戶端電腦安裝服務(wù)連接器實現(xiàn)的。主動和被動請求的主要不同在于智能化,不需要先到云端。之后的步驟和流程和被動請求時一樣的,如圖6所示:
圖6 主動請求和重定向流程(用于客戶端)
當客戶用他的賬號和密碼登陸電腦,一個驗證請求被發(fā)給Microsoft Federation Gateway(由于安裝了在線登陸協(xié)助服務(wù))。MFG 是云端的聯(lián)盟服務(wù)器
(1)MFS檢查用戶是不是聯(lián)盟用戶。如果是,用戶會被重定向到本地ADFS服務(wù)器。
(2)本地ADFS服務(wù)器請求客戶的賬號和密碼,然后到本地AD里面驗證。一旦驗證成功,ADFS服務(wù)器確認用戶需要的聲明。同時,從屬性倉庫里面提取聲明。
(3)屬性倉庫提取出聲明值,同時,把他們打包到認證。
(4)這個認證被發(fā)送到用戶。
(5)用戶把認證發(fā)送給本地MFG。本地MFG會評估聲明。決定哪個聲明用戶會接受到。然后把那些聲明給用戶的其他的認證。
(6)用戶把這個認證用于和Office 365 環(huán)境溝通。比如:用戶會打開Outlook客戶端作為向Exchange Online Services的請求。
(7)Exchange Online Services 會查看是否這個用戶是聯(lián)盟用戶,然后要求用戶提供認證. 。
(8)用戶提交認證。
實施的步驟包括了ADFS和DirSync兩部分:具體實施部署圖,如圖7所示:
圖7 實施部署圖
5.1 1~9步是ADFS的安裝步驟
5.2 10~13步是DirSync的安裝步驟
1)把聯(lián)盟域名加入O365環(huán)境:
(1)打開Internet Explorer, 訪問
https://portal.MicrosoftOnline.com
(2)點管理, 然后點域名.
(3)點添加域名.
(4)輸入域名abc.com
(5)點 確認域名
(6)按照要求添加TXT或者MX記錄。
(7)通過后,點擊確認。
2)添加一個 UPN suffix 在本地環(huán)境
(1)接入本地域控。
(2)點擊開始>管理員工具>活動目錄域和信。
(3)添加一個 UPN suffix, abc.com 。
3)選擇abc.com作為用戶domain
(1)接入本地域控。
(2)點擊開始>管理員工具>活動目錄用戶和電腦。
(3)把用戶的地址改為abc.com。
4)給ADFS服務(wù)器 添加A記錄 .
(1)接入本地域控,點擊開始>管理員工具>DNS.
(2)建立A記錄,輸入ADFS服務(wù)器匹配的URL和IP地址。
5)安裝ADFS服務(wù)器
(1)安裝一臺新的加入域的機器。
(2)下載ADFS安裝程序
(http://technet.microsoft.com/en-us/evalcenter/ee47659 7.aspx)安裝AdfsSetup.exe.
6)申請新證書Create a new certificate.
(1)接入本地域控,點擊開始>管理員工具>Internet Information Services (IIS)管理.
(2)點擊 服務(wù)器證書,創(chuàng)建域證書給abc.com。
7)導入證書
(1)打開 IIS 管理, 選默認網(wǎng)站.
(2)點擊Bindings,然后添加
(3)選https, 然后abc.com作為證書。
8)配置Active Directory Federated Services.
(1)接入本地域控,點擊開始>管理員工具>AD FS 2.0 Management.
(2)點擊 AD FS 2.0 Federation Server Configuration Wizard.
(3)選 Create a new Federation Service,然后選Stand-alone federation server
(4)確認SSL Certificate and Federation Service name是abc.com
9)添加聯(lián)盟域名
(1)Microsoft Online Services Module Power Shell.(http://go.microsoft.com/fwlink/p/?linkid=236293)
(2)運行下面命令:
$cred = Get-Credential
(3)然后輸入下面命令:
Convert-MSOLDomainToFederated—DomainNameabc.com
10)云端激活Active Directory Synchronization
(1)打開Internet Explorer, 訪問
https://portal.MicrosoftOnline.com
(2)用管理員賬號登陸.
(3)點 Activate (Active Directory Synchronization).
11)安裝Dirsync服務(wù)器
(1)安裝一臺新的加入域的機器。
(2)在登陸 Office 365的界面后,點擊 Set up Active Directory Synchronization
(3)選擇下載選項,并安裝.
12)設(shè)置 Microsoft Online Services Directory Synchronization
(1)開啟>所有程序>Microsoft Online Services>Directory Synchronization>Directory Sync Configuration
(2)輸入Office 365管理員和本地域管理員賬號
(3)完成 Wizard
13)啟動DirSync
(1)打開%programfiles%Microsoft Online Directory Sync.
(2)運行DirSyncConfigShell.psc1
(3)輸入 Start-OnlineCoexistenceSync
通過使用ADFS和DirSync服務(wù)器,實現(xiàn)了本地環(huán)境和云環(huán)境的統(tǒng)一身份驗證。
[1]方國偉. 詳解微軟Windows Azure云計算平臺[M]. 電子工業(yè)出版社, 2011-11-01: 10-18.
[2]朱明中.走進云計算:Windows Azure實戰(zhàn)手記 [M]. 水利水電出版社.2011-04-01:25-40.
[3]From Wikipedia Single sign-on[DB/OL],http://en.wikipedia.org/wiki/Single_sign-on.
[4]MarcGoodner. Understanding WSFederation[DB/OL].May 28, 2007.http://msdn.microsoft.com/en-us/library/bb498017.aspx.
[5]From Microsoft. Directory integration services Help[DB/OL].2012-03-22.http://onlinehelp.microsoft.com/en-us/office365-enterpris es/ff637606.aspx.
[6]MIIS 2003 Overview[DB/OL]. August 14, 2006.http://technet.microsoft.com/en-us/library/cc708678(WS.10).aspx.
[7]From Microsoft. AD FS 2.0 Step-by-Step and How To Guides[DB/OL].June9,2010.http://technet.microsoft.com/en-us/library/adfs2-step-by-step-guides(v=ws.10).aspx.