关于基于声明的身份认证

关于声明认证

CRM 4.0 使用集成的Windows认证方式去验证内部用户,使用表单认证方式去验证没有使用VPN的互联网用户。CRM 2011 使用基于声明的认证方式取代表单认证方式,基于声明的认证方式是一种提供简化用户登录和单点登录去访问CRM数据的一种解决方案。

基于声明的认证方式是构建在Windows用户身份识别WIF(Windows Identity Foundation)基础上,WIF是一种用于搭建支持声明认证方式和安全token服务的框架。安全token服务是基于标准的,具有互操作性的。而互操作性又是通过工业标准的协议实现的,例如WS联合服务(WS-Federation),WS信任服务(WS-Trust)以及安全断言语言(Security Assertion Markup Language 1.1)。本文是以活动目录联合服务2.0(Active Directory Federation Services 2.0)作为身份验证提供者。

在基于声明的认证方式中,身份验证提供者或者安全token服务商负责验证请求,并颁布SAML安全token,这些安全token包含了用于识别这些用户的声明,比如用户名,用户所处的组。信任方应用程序收到这些SAML的token,并使用其中所包含的声明去决定是否提供这些客户端所请求的资源。基于声明的认证方式可以用于认证本公司本组织内的用户,外部用户,来自合作伙伴的用户。

一.预备知识

在配置CRM 2011基于声明的的认证方式之前,你必须很了解一下的一些概念

·         CRM 2011 的安装流程;

·         基于声明的认证方式中的基于Token认证;

·         AD FS 2.0的安装和配置

·         公用密钥的管理和数字证书

参考书目

·         Windows Server 2008 R2 Active Directory Federation Services 2.0 (https://go.microsoft.com/fwlink/?LinkId=200771)

·         AD FS 2.0 Step-by-Step and How To Guides (https://go.microsoft.com/fwlink/?LinkId=180357)

·         Claims-Based Identity for Windows.pdf (https://go.microsoft.com/fwlink/?LinkID=209773)

MSDN content

·         A Guide to Claims–based Identity and Access Control (https://go.microsoft.com/fwlink/?LinkID=188049)

·         Using Active Directory Federation Services 2.0 in Identity Solutions (https://go.microsoft.com/fwlink/?LinkID=209776)

Video

·         Configuring IFD with Microsoft Dynamics CRM 2011 (https://go.microsoft.com/fwlink/?LinkID=209777)

Certificates and public key infrastructure (PKI)

·         Application Security - Certificates (https://go.microsoft.com/fwlink/?LinkId=200774)

·         Certificate Requirements for Federation Servers (https://go.microsoft.com/fwlink/?LinkId=182466)

概念

概念

定义

Active Directory Federation Services (AD FS)

活动目录联合认证服务

作为Windows Server 2003 R2 和 windows server 2008的一个组件,它支持身份验证联合,web的基于网络浏览的应用程序的单点登录

Claim

声明

一种区别一个主体和其他主体的陈述信息。比如这种陈述信息可以是用户名,用户身份,键,组,权限或者能力。每个声明都是由提供者去颁布的,而这些声明通常都包含一个或者多个值。

Claim rule

声明规则

声明规则是使用ADFS2.0里的声明语言编写的。这些声明语言是用户生成,转换,传递或者过滤声明。

Claims-aware application

支持声明的应用程序

 

支持声明的应用程序是可以利用声明去管理用户的身份验证和访问的应用程序。在这篇文档中,CRM就是支持声明的应用程序。

Claims provider

声明提供者

联合服务是为一个特定的事务颁发声明的,在CRM 2011基于声明的认证方式中,ADFS 2.0为它的用户颁发声明。

Federation server

联合认证服务器

是已经安装并配置了ADFS 2.0 的Windows 2008 或R2的机器,作为联合认证服务器,它颁布并认证token。

Federation Service

联合认证服务

一个安全token服务比如ADFS2.0的逻辑实例.

Identity provider

身份验证提供者

身份验证提供者是用于管理被信任的声明和SAML token。他们使用身份验证存储,将身份验证信息和属性保存在数据库中。在本文里,身份验证提供者就是ADFS 2.0,ADDS 就是身份验证的存储。

Relying party

依赖规则

 

是用于利用声明去进行身份验证和授权认证。比如,CRM服务器收到了一个声明,它用这个声明来确定是否这个来自合作伙伴的用户可以访问CRM数据。

Relying party trust

依赖规则信任

在ADFS 2.0中,是被信任的客体,是用于管理联合服务或者使用联合服务发布的声明之间的关系。

Security Assertion Markup Language (SAML)

安全断言语言

安全断言语言是用于说明如何利用HTTP的网络浏览器重定向去交换断言语言。SAML tokens是XML表示的声明。

Secure Sockets Layer (SSL)

安全套接层

 

安全套接层是结合数据加密和电子证书以及公用密钥来提高数据交流过程中的安全性。安全套接层支持了网络中用户认证和增加了数据的一致性和安全性。安全套接层并不支持授权认证。

二.从CRM4.0升级

如果您的CRM 4的部署已经设置了IFD,您就必须使用以下的步骤去重新设置IFD;

1. 安装配置ADFS 2.0;

2. 从CRM 4.0部署管理器,运行配置基于声明的认证方式的快捷方式,去进行CRM 2011 服务器的基于声明的认证方式的配置;

3. 配置AD FS 2.0基于声明的验证方式。注意: 在启用IFD之前,必须要保证CRM2011的基于声明的认证方式已经被启用。

4. 从CRM 4.0的部署管理器,运行IFD配置快捷方式去配置IFD

5. 为IFD配置AD FS 2.0

重要

请注意AD FS 2.0必须占用服务器的默认web站点。所以如果CRM 4.0已经占用了默认站点,那么我们就需要将AD FS 2.0安装到其他的服务器上。

启用匿名认证方式

在CRM 2011 IFD的环境下,使用CRM 4.0 for outlook(升级包7 或之后),您必须在所有CRM 2011安装的服务器上为SPLA 的CrmDiscoveryService启用匿名身份验证。请参考CRM 计划向导的部分see Microsoft Dynamics CRM for Outlook software requirements (https://go.microsoft.com/fwlink/?LinkID=210780)

Ø启用匿名认证方式

1. 启动IIS管理器;

2. 在Connection控制板,选择CRM 2011 网站,找到以下目录MSCRMServices\2007\SPLA

3. 在特性视图里,双击身份验证按钮;

4. 在身份验证页面,选择匿名身份验证;

5. 在Action的页面,选择Enable to use Anonymous authentication with the default settings.

关于IIS的匿名认证方式的更多的信息,请参考Enable Anonymous Authentication (IIS 7) (https://go.microsoft.com/fwlink/?LinkId=205316).

三.认证方式

Microsoft Dynamics CRM Server 2011支持如下身份验证方式:

Windows 身份验证;

基于声明的身份验证-内部访问;

基于声明的身份验证-外部访问;

基于声明的身份验证-内部和外部访问;

选择认证的方式是取决于公司的设计和部署目标。

3.1 Windows认证

和CRM4.0一样,你同样可以在CRM2011中使用基于NTLM 或者Kerberos的Windows验证方式。Windows的认证方式是当所有用户都是AD的用户时的最佳选择。

Windows验证流程图如下:

1. 客户端发送匿名登陆给CRM2011服务器;

2. CRM2011服务器返回401的错,并告诉客户端需要找AD进行身份验证;

3. 客户端发送Kerberos的请求给AD;

4. AD颁布Kerberos票证给客户端;

5. 客户端将这个票证提供给CRM2011服务器;

6.CRM2011将客户请求的内容发送给客户端

3.2基于声明的验证-内部访问

如果你拥有一个多域的环境,而这些域之间不存在互相信任的关系,或者CRM的一些用户是作为合作伙伴组织的成员,存在于不同的身份验证提供者,你就可以使用基于声明的验证方式去管理内部用户认证。

基于声明的验证方式流程如下:

1.     用户客户端发出一个匿名登陆的请求给CRM 2011服务器;

2.     CRM 2011服务器返回302错误,并告知客户端ADFS服务器的位置;

3.     客户端得到ADFS服务器的位置后,发送token请求给ADFS服务器;

4.     ADFS服务器返回401 error,并告诉客户端自己去找AD进行身份验证;

5.     客户端向AD提供本地集成的身份验证信息;

6.     如果验证通过,会发送给客户端一个Kerberos的票据;

7.     客户端将这个Kerberos票据发送给ADFS;

8.     ADFS颁布一个Token给客户端;

9.     用户将验证的token发给CRM 2011服务器;

10.  CRM 2011得知验证成功后,将客户端请求的信息发送给客户端。

 

3.3 基于声明的认证方式-外部访问

基于声明IFD访问的流程和以上描述的内部访问并没有很大的差别,而最大的不同就在于用户认证信息里是否包含Kerberos票证。当访问ADFS的时候,用户会得到一个输入用户凭证的窗口以登陆ADFS。如果已经在ADFS服务器上注册了多于一个的身份验证提供者,用户就会再得到一个身份验证提供者的选择列表。用户输入他们的用户凭证后,ADFS使用选中的身份验证提供者来验证这个用户凭证。

具体流程如下:

1. 用户客户端发出一个匿名登陆的请求给CRM 2011服务器;

2. CRM 2011服务器返回302错误,并告知客户端ADFS服务器的位置;

3. 客户端得到ADFS服务器的位置后,发送token请求给ADFS服务器;

4. ADFS收到请求后,返回登陆页面给客户端;

5. 客户输入登陆用户凭证;

6. ADFS收到这个用户凭证后,发送这个信息给AD进行用户身份验证,以确定该用户是否为有效用户;

7. AD返回验证结果到ADFS;

8. 如果验证成功,ADFS将会颁布一个token给用户;

9. 用户将验证的token发给CRM 2011服务器;

10. CRM 2011得知验证成功后,将客户端请求的信息发送给客户端。

 Tarry Wang,王常锐