单一登录: Active Directory联合身份验证服务开发简介(4)

2012-03-11
浏览
导读:用户来自何方? Fabrikam 有很多经销商,这些 经销商的角色都是联合身份验证帐户合作伙伴。当某个人使用采购应用程序时,Fabrikam 的联合身份验 证服务器如何判断应该将这个用户的浏览器重定向到哪个合作伙伴呢?事

用户来自何方?

Fabrikam 有很多经销商,这些 经销商的角色都是联合身份验证帐户合作伙伴。当某个人使用采购应用程序时,Fabrikam 的联合身份验 证服务器如何判断应该将这个用户的浏览器重定向到哪个合作伙伴呢?事实上,它是不知道的。由于要面 对众多的合作伙伴,Fabrikam 的联合身份验证服务器必须暂停登录过程,显示一个合作伙伴列表,并让 用户自己选择由哪个合作伙伴对其进行身份验证。这个环节也称为本地域识别。如果客户端选择了假的本 地域,那只会给用户自己带来麻烦,因为她并没有用于验证其他任何经销商所必需的凭据。

构建 强大的 ADFS 应用程序的目标之一就是避免这类详细信息再给用户造成麻烦。Northwind 自行车行可以让 它的用户通过一个带有强大查询字符串参数 (whr) 的链接去使用 Fabrikam 的网站,从而消除了这个繁 琐的步骤。(我觉得 whr 更像是“which home realm”的缩写,也就是“哪一个本地域 ”)Web 代理会寻找这个查询字符串参数,如果找到的话,就在预先处理过程中将其从请求中分离 出来。这个参数的值就是合作伙伴联合身份验证服务器的 URI(每一个联合身份验证服务器都用一个 URI 来命名)。因此,Northwind 车行员工所看到的链接就会是这样的:

https://fabrikam.com/purchasing.aspx/?whr=urn:federation:
Northwindbikeshop

有了这些方法,ADFS 就不必再显示互动式的本地域识别页面了。

 

声明 和转换

我在本文中已经多次谈到了声明。声明是 Windows 平台上一种全新的、越来越重要的安全 概念,也是声明某个实体(例如一个用户)的一种通用方法。我们可以看一下 Kerberos 票证,它包含着 已登录用户的用户标识符以及域组标识符。实际上,这就是由发布该票证的域控制器所签名的一组声明。 用户标识符就是一个身份标识声明。但是,虽然这种方法对于审核或个性化设置来说或许很实用,但它通 常不用于访问控制。票证中的组更可能用于执行访问检查。举例来说,如果您是“Managers” 组的成员,那么您就有权审批高额采购订单。

ADFS 支持三种类型的声明:身份标识声明、组声明 以及自定义声明。身份标识声明所采用的形式是用户主要名称 (UPN),一个电子邮件地址或者一个被称为 公用名的随机字符串。组声明是一个布尔值(数字或非数字),而且它不一定代表一个 Windows 组:它 可能仅代表您的应用程序所能够理解的一个逻辑角色。自定义声明包含一个字符串值。您可以在 ADFS 中 设置自定义声明,例如年龄、性别甚至是管理人员姓名。这些类型的自定义声明可能会让您考虑到隐私保 护问题。

声明转换正是 ADFS 用以解决隐私保护以及其他实际问题(比如说,并不是每个公司都 使用相同的术语,并不是每个资源合作伙伴都需要知道用户的电子邮件地址或年龄)的有效途径。正因为 这样,ADFS 的信任策略才允许您对每个合作伙伴做出不同的配置;您也应该只发送合作伙伴所需要的声 明。

每个公司都会定义一组组织声明;这就像是确定一个它能够理解的词汇表一样。例如, Fabrikam 可能会定义一个名为“所有者”的组声明,这个声明用来表示某自行车经销商的所 有者。而 Northwind 自行车行则可能用一个名为“管理人员”的声明来表示这个角色。只要 含义相同,名称不同是没有关系的,因为 Northwind 的所有者可以使用他的资源联合身份验证信任策略 ,将外发的“管理人员”声明映射为 Fabrikam 能够理解的“所有者”声明。管理 员可以在联合身份验证关系的两端对这类映射进行设置。图 3 所显示的就是一个资源合作伙伴的信任策 略中的声明映射示例。

图 3 声明映射

ASP.NET 2.0: 执行Web标准以便更加易于访问

ASP.NET 2.0在SQL Server 2005上自定义分页

ASP.NET 2.0(C#)(8) - DataSourceControl(

ASP.NET 2.0(C#)(7) - Profile(存储用户配

ASP.NET 2.0(C#)(6) - Membership&Role