為Microsoft Dynamics CRM 2011配置Claims-Based認(rèn)證
為Microsoft Dynamics CRM 2011配置Claims-Based 認(rèn)證Microsoft Dynamics CRM 4.0 使用Windows 集成認(rèn)證(Integrated Wi
為Microsoft Dynamics CRM 2011配置
Claims-Based 認(rèn)證
Microsoft Dynamics CRM 4.0 使用Windows 集成認(rèn)證(Integrated Windows authentication )來(lái)對(duì)內(nèi)部用戶進(jìn)行認(rèn)證,使用窗體身份認(rèn)證(Forms authentication )來(lái)對(duì)不使用VPN 的外部用戶提供internet 訪問(wèn)。Microsoft Dynamics CRM 2011 將窗體身份認(rèn)證替換為了基于聲明的認(rèn)證(Claim-based authentication ),它能夠提供簡(jiǎn)化的的用戶訪問(wèn)和單點(diǎn)登錄(single sign-on )來(lái)訪問(wèn)Microsoft Dynamics CRM的數(shù)據(jù)。本文將介紹如何為CRM 2011配置Claim-based 認(rèn)證以及IFD 。
關(guān)于ADFS 和Claim ,可參考下述資料:
A Guide to Claims–based Identity and Access Control (http://go.microsoft.com/fwlink/?LinkID=188049)
Using Active Directory Federation Services 2.0 in Identity Solutions (http://go.microsoft.com/fwlink/?LinkID=209776)
Windows Server 2008 R2 Active Directory Federation Services 2.0 (http://go.microsoft.com/fwlink/?LinkId=200771)
AD FS 2.0 Step-by-Step and How To Guides
(http://go.microsoft.com/fwlink/?LinkId=180357)
Claims-Based Identity for Windows.pdf
(http://go.microsoft.com/fwlink/?LinkID=209773)
本文的內(nèi)容將包括以下三部分:
1. Claim-based認(rèn)證的準(zhǔn)備工作
2. 配置Claim-based 認(rèn)證-內(nèi)部訪問(wèn)
3. 配置Claim-based 認(rèn)證-外部訪問(wèn)(IFD )
1. Claim-based認(rèn)證的準(zhǔn)備工作
在配置配置Claim-based 認(rèn)證之前,需要考慮以下問(wèn)題:
(1)CRM Server 2011和AD FS 2.0的條件
如果你打算將組建裝在同一個(gè)服務(wù)器上,那么你需要注意AD FS 2.0會(huì)安裝在默認(rèn)站點(diǎn)上。因此,在安裝CRM 2011時(shí)需要將其安裝在一個(gè)新的站點(diǎn)上。
,在配置Claim-based 認(rèn)證之前,必須配置CRM 2011站點(diǎn)使用Secure Sockets Layer (SSL )。因?yàn)?,CRM 安裝程序默認(rèn)不會(huì)將站點(diǎn)配置成SSL 。
CRM 2011的站點(diǎn)必須是具有單一綁定(single binding)。多個(gè)IIS 綁定,例如兩個(gè)HTTPS 或兩個(gè)HTTP ,是CRM 2011不支持的。但可以有一個(gè)HTTP 綁定,一個(gè)HTTPS 綁定。
配置Claim-based 認(rèn)證之后,在瀏覽器上必須使用HTTPS 來(lái)訪問(wèn)CRM 2011的內(nèi)部和外部地址。
(2)證書(shū)的選擇和要求
在使用Claim-based 認(rèn)證時(shí),證書(shū)在客戶端和CRM 服務(wù)器之間的安全通信中扮演了重要的角色。你需要在配置Claim-based 認(rèn)證之前對(duì)數(shù)字證書(shū)有一個(gè)深入的理解。
下面的文檔介紹了證書(shū)以及Public Key infrastructure(PKI )
· Application Security - Certificates
(http://go.microsoft.com/fwlink/?LinkId=200774)
· Certificate Requirements for Federation Servers
(http://go.microsoft.com/fwlink/?LinkId=182466)
在MS CRM 2011的Claim-based 認(rèn)證時(shí),以下場(chǎng)景需要證書(shū):
Claims 加密:Claim-based 認(rèn)證需要identities 提供一個(gè)加密的證書(shū)來(lái)認(rèn)證。這個(gè)證書(shū)必須被信任的認(rèn)證機(jī)構(gòu)(CA )簽名。
SSL(HTTPS)加密:為SSL 加密的證書(shū)必須對(duì)類似這些的主機(jī)名有效,例如
org.contoso.com, auth.contoso.com, 和 dev.contoso.com. 為了滿足這些需求,你可以使用一個(gè)通配符(wildcard)證書(shū)(*.contoso.com),或者一個(gè)支持Subject Alternative Name的證書(shū),或?yàn)槊總€(gè)名稱創(chuàng)建單獨(dú)的證書(shū)。最后一種方法僅僅適用于你為每個(gè)web server角色使用不同的服務(wù)器。多個(gè)IIS 綁定,例如一個(gè)站點(diǎn)有兩個(gè)HTTPS 綁定或兩個(gè)HTTP 綁定,這對(duì)于CRM 2011是不支持的。 在你選擇證書(shū)時(shí),下述證書(shū)可作為參考:
通配符證書(shū)(wildcard certificate ,推薦):一個(gè)通配符證書(shū)滿足單個(gè)域(domain )里內(nèi)部和外部訪問(wèn)的需求。例如,*.contoso.com證書(shū)支持外部訪問(wèn)
(org1.contoso.com 和org2.contoso.com )和內(nèi)部訪問(wèn)
(internalcrm.contoso.com )。因?yàn)橥獠康挠蛎╟ontoso.com )需要為內(nèi)部訪問(wèn)來(lái)解析,因此你不能使用服務(wù)器名稱來(lái)作為內(nèi)部訪問(wèn)。如果你希望這樣,你需要使用不同的CRM 2011服務(wù)器來(lái)提供內(nèi)部和外部的Claims 訪問(wèn),從而允許使用服務(wù)器名稱來(lái)作為內(nèi)部訪問(wèn)。
,Subject Alternative Name(SAN )證書(shū):如果你希望使用與外部訪問(wèn)地址不同的地址來(lái)進(jìn)行內(nèi)部訪問(wèn),那么你可以使用SAN 證書(shū)。例如:你內(nèi)部域名為
org.contoso.local ,外部域名為org.contoso.com 。不過(guò)請(qǐng)注意,第三方證書(shū)供應(yīng)商一般不為.local 域名提供證書(shū)。
自簽名證書(shū)(Self-signed certificate ):推薦自簽名證書(shū)僅僅在測(cè)試時(shí)使用。如果你使用自簽名證書(shū),它必須導(dǎo)入所有CRM 2011服務(wù)器以及所有訪問(wèn)CRM 2011的客戶端上的Trusted Root Certification Authorities store。 申請(qǐng)證書(shū)
在這里,我將以通配符證書(shū)為例,介紹如何創(chuàng)建證書(shū):
1) 打開(kāi)IIS 管理器
2) 點(diǎn)擊服務(wù)器名稱,在主界面雙擊Server Certificates(服務(wù)器證書(shū))
3) 在右側(cè)面板中點(diǎn)擊Create Certificate Request…
4) 按照下圖填寫(xiě)每一欄,點(diǎn)擊Next
注意:通用名稱必須包含.com ,如果是rxing ,則后面adfs 配置無(wú)法通過(guò)。

5) Cryptographic Service Provider Properties頁(yè)保持默認(rèn)值,點(diǎn)擊Next 。
6) 在File Name頁(yè)面,輸入C:req.txt,然后點(diǎn)擊Finish 。
7) Run cmd,運(yùn)行
certreq -submit -attrib "CertificateTemplate: WebServer" C:req.txt 出現(xiàn)錯(cuò)誤的話要安裝證書(shū)服務(wù)(在服務(wù)器管理-角色-增加中)
8) 選擇CA ,點(diǎn)擊OK.
9) 將證書(shū)存儲(chǔ)為C:Wildcard.cer。(9-11也可以在CA 中完成)
10) 回到IIS 管理器,點(diǎn)擊圖一中的Complete Certificate Request…
11) 選擇C:Wildcard.cer,F(xiàn)riendly name取名為 *.contoso.com,當(dāng)然,你也可以取其他名稱。
12) 點(diǎn)擊OK 。
13) 這樣我們就完成了通配符證書(shū)的請(qǐng)求。
為默認(rèn)站點(diǎn)綁定SSL 證書(shū)
1) 打開(kāi)IIS 管理器。
2) 在Connections 面板,展開(kāi)Sites ,點(diǎn)擊Default Web Site。
3) 在Actions 面板,點(diǎn)擊Bindings 。
4) 在Site Bindings對(duì)話框,點(diǎn)擊Add 。
5) Type選擇https 。
6) SSL certificate,選擇剛才創(chuàng)建的證書(shū) *.contoso.com,然后點(diǎn)擊OK 。
7) 點(diǎn)擊Close 。
為CRM 2011站點(diǎn)綁定SSL 證書(shū)
1) 打開(kāi)IIS 管理器。
2) 在Connections 面板,展開(kāi)Sites ,點(diǎn)擊Default Web Site。
,3) 在Actions 面板,點(diǎn)擊Bindings 。
4) 在Site Bindings對(duì)話框,點(diǎn)擊Add 。
5) Type選擇https 。
6) SSL certificate,選擇剛才創(chuàng)建的證書(shū) *.contoso.com。
7) Port選擇一個(gè)不同于443(例如444)的端口號(hào),然后點(diǎn)擊OK
8) 點(diǎn)擊Close 。
(3)DNS 配置
在為MS CRM 2011配置Claims-based 認(rèn)證之前,你需要在DNS 中添加一些記錄,來(lái)讓CRM 2011的各個(gè)斷點(diǎn)可以被正確解析。如果你是在配置測(cè)試環(huán)境,那么你可以在hosts.ini 文件里配置這些記錄,但在生產(chǎn)環(huán)境中我們不推薦使用hosts.ini 文件。
在DNS 中為外部訪問(wèn)地址(例如:contoso.com )添加一個(gè)正向查找區(qū)域(forward lookup zone)
點(diǎn)擊Start=>Administrative Tools=>DNS,打開(kāi)DNS 管理器。
在樹(shù)形結(jié)構(gòu)中點(diǎn)擊DNS 服務(wù)器,然后點(diǎn)擊New Zone來(lái)啟動(dòng)向?qū)А?/p>
在正向查找區(qū)域創(chuàng)建完畢后,為下列域名創(chuàng)建DNS 記錄:
· AD FS 2.0服務(wù)器(例如: sts1.contoso.com)
· 外部 IFD訪問(wèn)地址 - Microsoft Dynamics CRM IFD federation endpoint (例如: orgname.contoso.com)
· Microsoft Dynamics CRM Discovery Web Service endpoint (例如: dev.contoso.com)
· CRM IFD Federation endpoint (例如: auth.contoso.com)
· Microsoft Dynamics CRM 組織名 (例如: AWC.contoso.com and WTT.contoso.com)
· 內(nèi)部訪問(wèn)地址 - Microsoft Dynamics CRM claims federation endpoint (例如: internalcrm.contoso.com)
(4)防火墻配置
,你需要設(shè)置防火墻來(lái)允許CRM 2011和AD FS 2.0所使用的端口上傳入的數(shù)據(jù)流。HTTPS(SSL)默認(rèn)的端口是443.
2. 配置Claim-based 認(rèn)證-內(nèi)部訪問(wèn)
配置內(nèi)部訪問(wèn)的Claim-based 認(rèn)證需要完成以下步驟:
1. 安裝并配置AD FS 2.0。
2. 為Claims-based 認(rèn)證配置CRM 2011服務(wù)器。
3. 為Claims-based 認(rèn)證配置AD FS 2.0 服務(wù)器。
4. 測(cè)試claims-based 認(rèn)證內(nèi)部訪問(wèn)。
安裝并配置AD FS 2.0
CRM 2011可以與各種STS 提供者(STS Provider)一起使用。本文使用Active Directory Federation Services (AD FS) 2.0 來(lái)提供安全令牌服務(wù)(security token service)。
注意:AD FS 2.0會(huì)安裝到默認(rèn)站點(diǎn),因此在安裝AD FS 2.0之前,必須將CRM 2011安裝在新建的站點(diǎn)上。
1) 下載AD FS 2.0
請(qǐng)從下述鏈接下載AD FS 2.0
Active Directory Federation Services 2.0 RTW
(http://go.microsoft.com/fwlink/?LinkID=204237).
2) 安裝AD FS 2.0
在安裝向?qū)е羞x擇federation server role進(jìn)行安裝,更多信息可參考 Install the AD FS 2.0 Software
(http://go.microsoft.com/fwlink/?LinkId=192792).
3) 配置AD FS 2.0
1. 在AD FS 2.0服務(wù)器上,點(diǎn)擊Start ,然后點(diǎn)擊AD FS 2.0 Management.
2. 在 AD FS 2.0 Management 頁(yè), 點(diǎn)擊 AD FS 2.0 Federation Server Configuration Wizard.
3. 在 Welcome 頁(yè), 選擇 Create a new Federation Service , 然后點(diǎn)擊 Next .
,4. 在 Select Deployment Type 頁(yè), 選擇 Stand-alone federation server, 然后點(diǎn)擊 Next .
5. 選擇你的 SSL 證書(shū)(選擇上一節(jié)中創(chuàng)建的證書(shū) *.contoso.com), 添加一個(gè)Federation Service 名稱 (例如, sts1.contoso.com), 然后點(diǎn)擊 Next .
注意:只有在你為AD FS 2.0網(wǎng)站使用通配符證書(shū)的時(shí)候,才添加Federation Service 名稱。
6. 總結(jié)頁(yè)面點(diǎn)擊 Next .
7. 點(diǎn)擊 Close 來(lái)關(guān)閉 AD FS 2.0 配置向?qū)А?/p>
8. 如果你還沒(méi)有為第五步中的federation 服務(wù)器名稱(sts1.contoso.com )添加DNS 記錄,請(qǐng)為其添加DNS 記錄。
4) 驗(yàn)證 AD FS 2.0 是否工作
請(qǐng)按下述步驟來(lái)驗(yàn)證 AD FS 2.0 是否工作:
1. 打開(kāi) Internet Explorer.
2. 輸入federation metadata的URL ,例如:
3. 確保沒(méi)有跟證書(shū)相關(guān)的警告出現(xiàn)。
為Claims-based 認(rèn)證配置CRM 2011服務(wù)器
在安裝并配置完AD FS 2.0之后,我們需要在配置Claims-based 認(rèn)證之前,設(shè)置CRM 2011的綁定類型(binding type)和根域(root domains) 。 根據(jù)下述步驟來(lái)設(shè)置CRM 2011綁定為HTTPS 并配置根域名地址:
1. 打開(kāi) Deployment Manager.
2. 在 Actions 面板, 點(diǎn)擊 Properties .
3. 點(diǎn)擊 Web Address 頁(yè).
4. 在 Binding Type, 選擇 HTTPS .
,5. 確保網(wǎng)絡(luò)地址對(duì)于綁定CRM 2011站點(diǎn)的SSL 證書(shū)和SSL 端口有效。因?yàn)槟銥閮?nèi)部訪問(wèn)配置Claims-based 認(rèn)證,所以為根域地址使用主機(jī)名。端口號(hào)必須與IIS 中CRM 2011站點(diǎn)設(shè)置的端口一致。
6. 例如,對(duì)于*.contoso.com通配符證書(shū),你可以使用
internalcrm.contoso.com:444作為網(wǎng)絡(luò)地址。
7. 點(diǎn)擊OK .
注意:如果CRM Outlook 客戶端配置使用舊的綁定值,那么需要更新來(lái)使用新的值。
從CRM 2011傳遞到AD FS 2.0的Claims 數(shù)據(jù)需要使用你在Claims-Based 認(rèn)證配置向?qū)Вㄔ谙挛闹薪榻B)中指定的證書(shū)進(jìn)行加密。因此,CRM Web 應(yīng)用程序的CRMAppPool 賬戶必須對(duì)加密證書(shū)的私鑰具有讀(read )的權(quán)限。根據(jù)下述步驟來(lái)賦予此權(quán)限:
1. 在CRM 2011服務(wù)器上, 運(yùn)行 Microsoft Management Console (Start=>Run MMC) 。
2. 點(diǎn)擊Files=>Add/Remove Snap-in…
3. 左側(cè)面板中選擇Certificates ,點(diǎn)擊Add 添加到右側(cè)面板。
4. 在彈出的窗口中選擇Computer account。
5. 下一個(gè)頁(yè)面中,選擇Local computer,點(diǎn)擊Finish 。
6. 點(diǎn)擊OK 。
7. 展開(kāi)Certificates (Local Computer) =>Personal, 選中Certificates 。
8. 在中間面板,右擊你將要在Claims-Based 認(rèn)證配置向?qū)е兄付ǖ募用茏C書(shū)(此例中為*.contoso.com),點(diǎn)擊All Tasks=>Manage Private Keys.
9. 點(diǎn)擊Add ,添加CRMAppPool 賬戶(若你使用的是Network Service,直接選擇該賬戶),然后賦予Read 權(quán)限。
注意:
你可以使用 IIS管理器來(lái)查看CRMAppPool 使用了什么賬戶。在 Connections 面板, 點(diǎn)擊 Application Pools, 然后查看CRMAppPool 下的Identity 。
,10. 點(diǎn)擊OK 。
下面,我們通過(guò)Claims-Based 認(rèn)證配置向?qū)В–onfigure Claims-Based Authentication Wizard)來(lái)配置Claims-Based 認(rèn)證。若想了解如何通過(guò)PowerShell 來(lái)配置Claims-Based 認(rèn)證,可參考英文原文。
1. 打開(kāi) Deployment Manager。
2. 左側(cè)導(dǎo)航面板中,右擊 Microsoft Dynamics CRM, 然后點(diǎn)擊 Configure Claims-Based Authentication.
3. 讀一讀這一頁(yè)的內(nèi)容, 然后點(diǎn)擊 Next .
4. 在 Specify the security token service 頁(yè), 輸入Federation metadata URL, 例如
5. 這個(gè)數(shù)據(jù)通常是在AD FS 2.0的網(wǎng)站上??蓪⑦@個(gè)URL 復(fù)制到IE 上來(lái)查看federation metadata,來(lái)確保這是正確的URL 。IE 上訪問(wèn)該URL 時(shí)不能有證書(shū)相關(guān)的警告。
6. 點(diǎn)擊 Next .
7. 在 Specify the encryption certificate 頁(yè), 點(diǎn)擊Select…
8. 選擇一個(gè)證書(shū),在這里,我們選擇 *.contoso.com。
9. 這個(gè)證書(shū)是用來(lái)加密傳到AD FS 2.0安全令牌服務(wù)的認(rèn)證安全令牌。 注意
Microsoft Dynamics CRM 服務(wù)賬戶必須對(duì)加密證書(shū)的私鑰有Read 。
10. 點(diǎn)擊 Next . Claims-Based認(rèn)證配置向?qū)?huì)驗(yàn)證你指定的令牌和證書(shū)。
11. 在 System Checks 頁(yè),若檢驗(yàn)通過(guò),點(diǎn)擊 Next .
12. 在 Review your selections and then click Apply 頁(yè), 確認(rèn)剛才的輸入,然后點(diǎn)擊Apply .
13. 在這一頁(yè)中,記下其中的URL ,因?yàn)榻酉聛?lái),你將使用這個(gè)URL 添加一個(gè)信賴方(relying party)到安全令牌服務(wù)。
,14. 點(diǎn)擊 Finish 。
為Claims-based 認(rèn)證配置AD FS 2.0服務(wù)器
完成上一步后,下一步我們需要在AD FS 2.0中添加并配置聲明提供方信任(claims provider trusts)和依賴方信任(relying party trusts)。
1) 配置claims provider trusts
你需要添加一條claims rule來(lái)從Active Directory獲得user 的UPN(user principal name) 然后將其作為UPN 傳遞到MS CRM 。根據(jù)以下步驟來(lái)配置AD FS 2.0將UPN LDAP屬性作為claim 發(fā)送到依賴方(relying party):
1. 在安裝有 AD FS 2.0 的服務(wù)器上, 打開(kāi) AD FS 2.0 Management.
2. 在 Navigation Pane, 展開(kāi) Trust Relationships, 然后點(diǎn)擊 Claims Provider Trusts.
3. 在 Claims Provider Trusts下, 右擊 Active Directory, 然后點(diǎn)擊 Edit Claims Rules.
4. 在 Rules 編輯器, 點(diǎn)擊 Add Rule,
5. 在 Claim rule template 列表, 選擇 Send LDAP Attributes as Claims 模板, 然后點(diǎn)擊Next .
6. 創(chuàng)建下列rule:
· Claim rule name: UPN Claim Rule (或其他說(shuō)明性的名稱)
· Add the following mapping:
? Attribute store: Active Directory
? LDAP Attribute: User Principal Name
? Outgoing Claim Type: UPN
7. 點(diǎn)擊 Finish , 然后點(diǎn)擊 OK 關(guān)閉 Rules 編輯器.
2) 配置relying party trusts
在開(kāi)啟claims-based 認(rèn)證之后,你必須將CRM 2011服務(wù)器配置成一個(gè)信賴方來(lái)使用從AD FS 2.0傳來(lái)的聲明來(lái)進(jìn)行內(nèi)部訪問(wèn)的claims 認(rèn)證。
1. 在安裝有 AD FS 2.0 的服務(wù)器上, 打開(kāi) AD FS 2.0 Management.