为Microsoft Dynamics CRM 2011配置Claims-Based认证

为Microsoft Dynamics CRM 2011配置Claims-Based 认证Microsoft Dynamics CRM 4.0 使用Windows 集成认证(Integrated Wi

为Microsoft Dynamics CRM 2011配置

Claims-Based 认证

Microsoft Dynamics CRM 4.0 使用Windows 集成认证(Integrated Windows authentication )来对内部用户进行认证,使用窗体身份认证(Forms authentication )来对不使用VPN 的外部用户提供internet 访问。Microsoft Dynamics CRM 2011 将窗体身份认证替换为了基于声明的认证(Claim-based authentication ),它能够提供简化的的用户访问和单点登录(single sign-on )来访问Microsoft Dynamics CRM的数据。本文将介绍如何为CRM 2011配置Claim-based 认证以及IFD 。

关于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)

本文的内容将包括以下三部分:

1. Claim-based认证的准备工作

2. 配置Claim-based 认证-内部访问

3. 配置Claim-based 认证-外部访问(IFD )

1. Claim-based认证的准备工作

在配置配置Claim-based 认证之前,需要考虑以下问题:

(1)CRM Server 2011和AD FS 2.0的条件

如果你打算将组建装在同一个服务器上,那么你需要注意AD FS 2.0会安装在默认站点上。因此,在安装CRM 2011时需要将其安装在一个新的站点上。

,

在配置Claim-based 认证之前,必须配置CRM 2011站点使用Secure Sockets Layer (SSL )。因为,CRM 安装程序默认不会将站点配置成SSL 。

CRM 2011的站点必须是具有单一绑定(single binding)。多个IIS 绑定,例如两个HTTPS 或两个HTTP ,是CRM 2011不支持的。但可以有一个HTTP 绑定,一个HTTPS 绑定。

配置Claim-based 认证之后,在浏览器上必须使用HTTPS 来访问CRM 2011的内部和外部地址。

(2)证书的选择和要求

在使用Claim-based 认证时,证书在客户端和CRM 服务器之间的安全通信中扮演了重要的角色。你需要在配置Claim-based 认证之前对数字证书有一个深入的理解。

下面的文档介绍了证书以及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 认证时,以下场景需要证书:

Claims 加密:Claim-based 认证需要identities 提供一个加密的证书来认证。这个证书必须被信任的认证机构(CA )签名。

SSL(HTTPS)加密:为SSL 加密的证书必须对类似这些的主机名有效,例如

org.contoso.com, auth.contoso.com, 和 dev.contoso.com. 为了满足这些需求,你可以使用一个通配符(wildcard)证书(*.contoso.com),或者一个支持Subject Alternative Name的证书,或为每个名称创建单独的证书。最后一种方法仅仅适用于你为每个web server角色使用不同的服务器。多个IIS 绑定,例如一个站点有两个HTTPS 绑定或两个HTTP 绑定,这对于CRM 2011是不支持的。 在你选择证书时,下述证书可作为参考:

通配符证书(wildcard certificate ,推荐):一个通配符证书满足单个域(domain )里内部和外部访问的需求。例如,*.contoso.com证书支持外部访问

(org1.contoso.com 和org2.contoso.com )和内部访问

(internalcrm.contoso.com )。因为外部的域名(contoso.com )需要为内部访问来解析,因此你不能使用服务器名称来作为内部访问。如果你希望这样,你需要使用不同的CRM 2011服务器来提供内部和外部的Claims 访问,从而允许使用服务器名称来作为内部访问。

,

Subject Alternative Name(SAN )证书:如果你希望使用与外部访问地址不同的地址来进行内部访问,那么你可以使用SAN 证书。例如:你内部域名为

org.contoso.local ,外部域名为org.contoso.com 。不过请注意,第三方证书供应商一般不为.local 域名提供证书。

自签名证书(Self-signed certificate ):推荐自签名证书仅仅在测试时使用。如果你使用自签名证书,它必须导入所有CRM 2011服务器以及所有访问CRM 2011的客户端上的Trusted Root Certification Authorities store。 申请证书

在这里,我将以通配符证书为例,介绍如何创建证书:

1) 打开IIS 管理器

2) 点击服务器名称,在主界面双击Server Certificates(服务器证书)

3) 在右侧面板中点击Create Certificate Request…

4) 按照下图填写每一栏,点击Next

注意:通用名称必须包含.com ,如果是rxing ,则后面adfs 配置无法通过。

,

5) Cryptographic Service Provider Properties页保持默认值,点击Next 。

6) 在File Name页面,输入C:req.txt,然后点击Finish 。

7) Run cmd,运行

certreq -submit -attrib "CertificateTemplate: WebServer" C:req.txt 出现错误的话要安装证书服务(在服务器管理-角色-增加中)

8) 选择CA ,点击OK.

9) 将证书存储为C:Wildcard.cer。(9-11也可以在CA 中完成)

10) 回到IIS 管理器,点击图一中的Complete Certificate Request…

11) 选择C:Wildcard.cer,Friendly name取名为 *.contoso.com,当然,你也可以取其他名称。

12) 点击OK 。

13) 这样我们就完成了通配符证书的请求。

为默认站点绑定SSL 证书

1) 打开IIS 管理器。

2) 在Connections 面板,展开Sites ,点击Default Web Site。

3) 在Actions 面板,点击Bindings 。

4) 在Site Bindings对话框,点击Add 。

5) Type选择https 。

6) SSL certificate,选择刚才创建的证书 *.contoso.com,然后点击OK 。

7) 点击Close 。

为CRM 2011站点绑定SSL 证书

1) 打开IIS 管理器。

2) 在Connections 面板,展开Sites ,点击Default Web Site。

,

3) 在Actions 面板,点击Bindings 。

4) 在Site Bindings对话框,点击Add 。

5) Type选择https 。

6) SSL certificate,选择刚才创建的证书 *.contoso.com。

7) Port选择一个不同于443(例如444)的端口号,然后点击OK

8) 点击Close 。

(3)DNS 配置

在为MS CRM 2011配置Claims-based 认证之前,你需要在DNS 中添加一些记录,来让CRM 2011的各个断点可以被正确解析。如果你是在配置测试环境,那么你可以在hosts.ini 文件里配置这些记录,但在生产环境中我们不推荐使用hosts.ini 文件。

在DNS 中为外部访问地址(例如:contoso.com )添加一个正向查找区域(forward lookup zone)

点击Start=>Administrative Tools=>DNS,打开DNS 管理器。

在树形结构中点击DNS 服务器,然后点击New Zone来启动向导。

在正向查找区域创建完毕后,为下列域名创建DNS 记录:

· AD FS 2.0服务器(例如: sts1.contoso.com)

· 外部 IFD访问地址 - 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)

· 内部访问地址 - Microsoft Dynamics CRM claims federation endpoint (例如: internalcrm.contoso.com)

(4)防火墙配置

,

你需要设置防火墙来允许CRM 2011和AD FS 2.0所使用的端口上传入的数据流。HTTPS(SSL)默认的端口是443.

2. 配置Claim-based 认证-内部访问

配置内部访问的Claim-based 认证需要完成以下步骤:

1. 安装并配置AD FS 2.0。

2. 为Claims-based 认证配置CRM 2011服务器。

3. 为Claims-based 认证配置AD FS 2.0 服务器。

4. 测试claims-based 认证内部访问。

安装并配置AD FS 2.0

CRM 2011可以与各种STS 提供者(STS Provider)一起使用。本文使用Active Directory Federation Services (AD FS) 2.0 来提供安全令牌服务(security token service)。

注意:AD FS 2.0会安装到默认站点,因此在安装AD FS 2.0之前,必须将CRM 2011安装在新建的站点上。

1) 下载AD FS 2.0

请从下述链接下载AD FS 2.0

Active Directory Federation Services 2.0 RTW

(http://go.microsoft.com/fwlink/?LinkID=204237).

2) 安装AD FS 2.0

在安装向导中选择federation server role进行安装,更多信息可参考 Install the AD FS 2.0 Software

(http://go.microsoft.com/fwlink/?LinkId=192792).

3) 配置AD FS 2.0

1. 在AD FS 2.0服务器上,点击Start ,然后点击AD FS 2.0 Management.

2. 在 AD FS 2.0 Management 页, 点击 AD FS 2.0 Federation Server Configuration Wizard.

3. 在 Welcome 页, 选择 Create a new Federation Service , 然后点击 Next .

,

4. 在 Select Deployment Type 页, 选择 Stand-alone federation server, 然后点击 Next .

5. 选择你的 SSL 证书(选择上一节中创建的证书 *.contoso.com), 添加一个Federation Service 名称 (例如, sts1.contoso.com), 然后点击 Next .

注意:只有在你为AD FS 2.0网站使用通配符证书的时候,才添加Federation Service 名称。

6. 总结页面点击 Next .

7. 点击 Close 来关闭 AD FS 2.0 配置向导。

8. 如果你还没有为第五步中的federation 服务器名称(sts1.contoso.com )添加DNS 记录,请为其添加DNS 记录。

4) 验证 AD FS 2.0 是否工作

请按下述步骤来验证 AD FS 2.0 是否工作:

1. 打开 Internet Explorer.

2. 输入federation metadata的URL ,例如:

3. 确保没有跟证书相关的警告出现。

为Claims-based 认证配置CRM 2011服务器

在安装并配置完AD FS 2.0之后,我们需要在配置Claims-based 认证之前,设置CRM 2011的绑定类型(binding type)和根域(root domains) 。 根据下述步骤来设置CRM 2011绑定为HTTPS 并配置根域名地址:

1. 打开 Deployment Manager.

2. 在 Actions 面板, 点击 Properties .

3. 点击 Web Address 页.

4. 在 Binding Type, 选择 HTTPS .

,

5. 确保网络地址对于绑定CRM 2011站点的SSL 证书和SSL 端口有效。因为你为内部访问配置Claims-based 认证,所以为根域地址使用主机名。端口号必须与IIS 中CRM 2011站点设置的端口一致。

6. 例如,对于*.contoso.com通配符证书,你可以使用

internalcrm.contoso.com:444作为网络地址。

7. 点击OK .

注意:如果CRM Outlook 客户端配置使用旧的绑定值,那么需要更新来使用新的值。

从CRM 2011传递到AD FS 2.0的Claims 数据需要使用你在Claims-Based 认证配置向导(在下文中介绍)中指定的证书进行加密。因此,CRM Web 应用程序的CRMAppPool 账户必须对加密证书的私钥具有读(read )的权限。根据下述步骤来赋予此权限:

1. 在CRM 2011服务器上, 运行 Microsoft Management Console (Start=>Run MMC) 。

2. 点击Files=>Add/Remove Snap-in…

3. 左侧面板中选择Certificates ,点击Add 添加到右侧面板。

4. 在弹出的窗口中选择Computer account。

5. 下一个页面中,选择Local computer,点击Finish 。

6. 点击OK 。

7. 展开Certificates (Local Computer) =>Personal, 选中Certificates 。

8. 在中间面板,右击你将要在Claims-Based 认证配置向导中指定的加密证书(此例中为*.contoso.com),点击All Tasks=>Manage Private Keys.

9. 点击Add ,添加CRMAppPool 账户(若你使用的是Network Service,直接选择该账户),然后赋予Read 权限。

注意:

你可以使用 IIS管理器来查看CRMAppPool 使用了什么账户。在 Connections 面板, 点击 Application Pools, 然后查看CRMAppPool 下的Identity 。

,

10. 点击OK 。

下面,我们通过Claims-Based 认证配置向导(Configure Claims-Based Authentication Wizard)来配置Claims-Based 认证。若想了解如何通过PowerShell 来配置Claims-Based 认证,可参考英文原文。

1. 打开 Deployment Manager。

2. 左侧导航面板中,右击 Microsoft Dynamics CRM, 然后点击 Configure Claims-Based Authentication.

3. 读一读这一页的内容, 然后点击 Next .

4. 在 Specify the security token service 页, 输入Federation metadata URL, 例如

5. 这个数据通常是在AD FS 2.0的网站上。可将这个URL 复制到IE 上来查看federation metadata,来确保这是正确的URL 。IE 上访问该URL 时不能有证书相关的警告。

6. 点击 Next .

7. 在 Specify the encryption certificate 页, 点击Select…

8. 选择一个证书,在这里,我们选择 *.contoso.com。

9. 这个证书是用来加密传到AD FS 2.0安全令牌服务的认证安全令牌。 注意

Microsoft Dynamics CRM 服务账户必须对加密证书的私钥有Read 。

10. 点击 Next . Claims-Based认证配置向导会验证你指定的令牌和证书。

11. 在 System Checks 页,若检验通过,点击 Next .

12. 在 Review your selections and then click Apply 页, 确认刚才的输入,然后点击Apply .

13. 在这一页中,记下其中的URL ,因为接下来,你将使用这个URL 添加一个信赖方(relying party)到安全令牌服务。

,

14. 点击 Finish 。

为Claims-based 认证配置AD FS 2.0服务器

完成上一步后,下一步我们需要在AD FS 2.0中添加并配置声明提供方信任(claims provider trusts)和依赖方信任(relying party trusts)。

1) 配置claims provider trusts

你需要添加一条claims rule来从Active Directory获得user 的UPN(user principal name) 然后将其作为UPN 传递到MS CRM 。根据以下步骤来配置AD FS 2.0将UPN LDAP属性作为claim 发送到依赖方(relying party):

1. 在安装有 AD FS 2.0 的服务器上, 打开 AD FS 2.0 Management.

2. 在 Navigation Pane, 展开 Trust Relationships, 然后点击 Claims Provider Trusts.

3. 在 Claims Provider Trusts下, 右击 Active Directory, 然后点击 Edit Claims Rules.

4. 在 Rules 编辑器, 点击 Add Rule,

5. 在 Claim rule template 列表, 选择 Send LDAP Attributes as Claims 模板, 然后点击Next .

6. 创建下列rule:

· Claim rule name: UPN Claim Rule (或其他说明性的名称)

· Add the following mapping:

Ø Attribute store: Active Directory

Ø LDAP Attribute: User Principal Name

Ø Outgoing Claim Type: UPN

7. 点击 Finish , 然后点击 OK 关闭 Rules 编辑器.

2) 配置relying party trusts

在开启claims-based 认证之后,你必须将CRM 2011服务器配置成一个信赖方来使用从AD FS 2.0传来的声明来进行内部访问的claims 认证。

1. 在安装有 AD FS 2.0 的服务器上, 打开 AD FS 2.0 Management.

标签: