本文基于 "Geneva" 框架的预发布版本撰写而成。所有信息均有可能发生变更。
本文将介绍以下内容:
使用 Geneva 框架实现安全令牌服务
联合安全性
声明转换
本文使用了以下技术:
Windows Communication Foundation、ASP.NET、Geneva 框架
Microsoft 基于声明的访问 (CBA) 平台战略(代号为 "Geneva")包括 "Geneva" 框架、"Geneva" 服务器和 Windows CardSpace "Geneva"。Geneva 框架可为开发人员提供相关工具来构建基于声明的应用程序和服务(这些服务包括由“安全令牌服务”(STS) 所颁发的令牌),还提供相关工具来构建自定义 STS 和启用 CardSpace 的 Windows 应用程序。虽然 Geneva 服务器是企业级 STS,但 Geneva 框架可以为不需要企业级功能的环境构建自定义 STS。Windows CardSpace Geneva 由 Windows 客户端计算机中作为标识选择器和标识提供者的 Windows CardSpace 演变而来。
在我上一篇介绍 Geneva 框架的文章中,我曾讨论过依靠 STS 颁发的令牌来构建基于声明的 Windows Communication Foundation (WCF) 服务的一种较好方法。在这里,我将使用 Geneva 框架来构建自定义 STS。
在继续阅读本文之前,建议您先阅读一下由 Keith Brown 和 Sesha Mani 合著的Geneva 框架开发人员白皮书和我的上一篇文章“Geneva 框架构建基于声明的 WCF 服务的更好方法”。
安全令牌服务入门
无论是基于 Geneva 服务器的 STS 还是使用 Geneva 框架构建的 STS,其主要作用都是作为安全网关对调用方进行身份验证,并颁发附带描述调用方声明的安全令牌。从前面提到的文章中,您应该能够回想起 STS 身份验证支持多种方案:
从身份验证机制中分离出应用程序和服务,从而使其能够专注于授权相关声明。
支持多种凭据类型,而不会使应用程序和服务的实现变复杂。
支持联合方案,用户可以通过在自身的域中进行身份验证来获得对另一个域中资源的访问权限(通过建立不同域的 STS 之间的信任关系)。
简化标识委派方案,经过身份验证的用户将获得对下游服务的访问权限。
简化声明转换,使相关声明能够用于对应用程序和服务进行授权。
其中的任何方案都可以基于被动联合(基于浏览器)或主动联合(基于 Windows 客户端)。下面我将详细介绍这些方案,同时说明如何使用 Geneva 框架在自定义 STS 中构建相关逻辑。