本文是前段时间为开发部门搭建CRM2011 claims-based认证的测试环境的步骤记录,将使用ADFS为crm2011配置基于声明验证claims-based authentication的IFD模式。
对于IFD配置的身份验证方式,crm2011和crm4.0已经完全不同。crm4.0 时代部署IFD身份验证基于表单来完成,ifd配置过程可以通过更改配置文件或用微软提供的IFD部署工具完成,整个过程比较简便,在IFD部署完成后,从安全性的角度考虑都会建议使用HTTPS来发布IFD配置。在新版的crm2011中配置IFD,部署的步骤相对繁杂一些,新版的IFD部署采用基于声明的身份验证Claims-based Authentication。
在crm2011 IFD部署中使用ADFS(Active Directory Federation Services 2.0)作为身份验证提供者。当用户通过internet连接到crmweb站点时,会跳转到ADFS服务。该服务接收到用户登录信息后将通过内部AD对信息进行验证,AD验证结果返回ADFS,并由ADFS发出一个安全token给用户,再提交给crm2011 web站点。在安全token中包含了用户信息,组成员关系从而确定用户访问授权。
我在测试环境的搭建拿3部windows server2008 R2服务器分别充当AD中的DC 并配置证书服务, APP 角色安装crm2011,DB角色安装sql2008R2。以下是涉及的配置过程。
A.基础环境部署
1).首先安装配置好活动目录,并在DC上启用证书服务
2).在DB 角色服务器安装sql2008R2
3).在APP角色服务器安装crm2011
B.为ADFS服务申请证书,由于是测试环境,证书的颁发都由DC完成,为方便管理,建议申请通配符证书。
1). 在IIS管理器,创建一个证书请求,并以webserver模板创建一个friendly name为 *.contoso.com的证书。
2). 将新颁发的证书导出,后续步骤需要在APP 角色服务器上使用到该证书。
C.在app配置证书并安装ADFS2.0。
1).将导出的证书导入到APP中,计算机账户的个人证书和受信任的根证书的存储路径中都导入一份证书副本,否则将影响到ADFS在安装过程中识别正确的证书。
2).有点需要注意的是ADFS的安装需要更改iis默认站点,所以在配置crm2011时,需要把crm2011安装到一个新的站点,我选用的是:5555为端口的一个新站点。
在iis管理器中为默认站点启用HTTPS并选中刚才颁发的*.contoso.com 为ssl证书,默认端口443。为CRM2012 站点启用SSL,并选*.contoso.com 为ssl证书,在444端口侦听ssl连接。
3).安装ADFS.完成安装后,打开配置配置向导,配置Federation server
4). 配置Federation server,因为使用通配符证书,需要为Federation service指定一个名称。在操作中我设置为Fed.contoso.com
fed.contoso.com 将会是Federation service 的对外接口,在生产环境中需要配置DNS保证internet上的可访问性。
D. 完成ADFS的安装后,需要配置crm的claim-based authentication。
1)在配置claim-based authentication 之前需要启用CRM2011的HTTPS,上面有个步骤是对IIS站点中的crm站点启用HTTPS,这个步骤需要到Deployment manager中启用HTTPS,如图,可以将图中涉及到的名称改为带有公网域名信息的FQDN格式:
2)配置claim-based authentication 。这个过程将确定Federation service 的URL。
注意图中显示的URL, 前半部分正是在安装过程中指定的federation service 名称。可以在IE整直接访问这个URL,以确定ADFS的安装正确性。如果正确安装ADFS,服务正常的话,可以通过这个URL打开一个关于Federation service 的XML文件。
3)为claim-based authentication 选择证书,确认配置后即可应用设置。
E.确认ADFS证书的配置。通过ADFS管理器,可以查看证书信息。
将会发现token-signing 和token-Decrypting 证书不受信任,可以手动把它们添加为首信任的证书
F. 配置CRM 2011 IFD。如下图,正确填写域名信息和申请的证书域名应一致。
提供外部认证的URL
核实配置信息,并完成配置。
F。添加trust relay。这个步骤将crm2011 web站点服务添加为其中的一个trust relay,和ADFS服务关联起来。如下图,需要提供上面步骤设置的IFD external access URL。
***这里还有一个细节需要注意,由于我在安装CRM2011采用的是域账号为服务账号,该服务账号要求有ADFS服务证书的私钥读权限,否则在配置trust replay部分将会报错,从URL导入数据时候会出现INTERNAL 500的错误。按照下图更改权限。
选择issuance authorization rules
核实配置
G。在ADFS管理器的claim provider trusts中为ACTIVE DIRECTORY 加入一条关于UPN的新claim rules。
如下图加入一条UPN的rule
H。编辑Relaying party trusts 中的crm服务对应的3条claim rule。
1)分别添加UPN 和primary sid 相关的rule,这两条有以Pass through or filter an incoming claim为模板
2)添加一条以transform an incoming claim 为模板添加一条将登录名转换为内部用户名的rule
I。完成以上工作后,重启IIS,测试IFD
在IE中输入 https://demo.contoso.com:444 (demo为crm的组织名)
跳转到ADFS服务,并由adfs提供登录验证
提交验证后,ADFS和AD进行验证,通过后打开CRM
以上的配置过程可以从微软官方找到相关白皮书 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9886ab96-3571-420f-83ad-246899482fb4&displaylang=en。