联合示例演示联合安全性。
示例详细信息
Windows Communication Foundation(WCF)支持通过wsFederationHttpBinding
部署联合安全体系结构。 它提供了 wsFederationHttpBinding
一个安全、可靠且可互作的绑定,涉及使用 HTTP 作为请求/回复通信的基础传输机制,以及文本/XML 作为编码的线路格式。 有关 WCF 中的联合的详细信息,请参阅 联合。
方案由 4 个部分组成:
BookStore 服务
BookStore STS
HomeRealm STS
BookStore 客户端
BookStore 服务支持两个操作,BrowseBooks
以及 BuyBook
。 它允许匿名访问BrowseBooks
操作,但需要经过身份验证的访问权限才能访问BuyBooks
操作。 身份验证采用 BookStore STS 颁发的令牌的形式。 BookStore 服务的配置文件通过 wsFederationHttpBinding
将客户端指向 BookStore STS。
<wsFederationHttpBinding>
<!-- This is the Service binding for the BuyBooks endpoint. It redirects clients to the BookStore STS -->
<binding name='BuyBookBinding'>
<security mode="Message">
<message>
<issuerMetadata
address='http://localhost/FederationSample/BookStoreSTS/STS.svc/mex' >
<identity>
<dns value ='BookStoreSTS.com'/>
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</wsFederationHttpBinding>
然后,BookStore STS 要求客户端使用 HomeRealm STS 颁发的令牌进行身份验证。 同样,BookStore STS 的配置文件使用 wsFederationHttpBinding
将客户端指向 HomeRealm STS。
<wsFederationHttpBinding>
<!-- This is the binding for the clients requesting tokens from this STS. It redirects clients to the HomeRealm STS -->
<binding name='BookStoreSTSBinding'>
<security mode='Message'>
<message>
<issuerMetadata
address='http://localhost/FederationSample/HomeRealmSTS/STS.svc/mex' >
<identity>
<dns value ='HomeRealmSTS.com' />
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</wsFederationHttpBinding>
访问 BuyBook
作时的事件序列如下所示:
客户端使用 Windows 凭据向 HomeRealm STS 进行身份验证。
HomeRealm STS 颁发可用于向 BookStore STS 进行身份验证的令牌。
客户端使用 HomeRealm STS 颁发的令牌向 BookStore STS 进行身份验证。
BookStore STS 颁发可用于向 BookStore 服务进行身份验证的令牌。
客户端使用 BookStore STS 颁发的令牌向 BookStore 服务进行身份验证。
客户端访问
BuyBook
操作。
请参阅以下有关如何设置和运行此示例的说明。
注释
必须对 wwwroot 目录具有写入权限才能运行此示例。
设置、生成和运行示例
打开 SDK 命令窗口。 在示例路径中,运行 Setup.bat。 这会创建示例所需的虚拟目录,并安装具有适当权限的所需证书。
注释
Setup.bat 批处理文件旨在从 Windows SDK 命令提示符运行。 这要求 MSSDK 环境变量指向 SDK 的安装目录。 此环境变量在 Windows SDK 命令提示符中自动设置。 在 Windows Vista 上,必须确保安装了 IIS 6.0 管理兼容性,因为设置使用 IIS 管理员脚本。 在 Windows Vista 上运行设置脚本需要管理员权限。
在 Visual Studio 中打开FederationSample.sln,然后从“生成”菜单中选择“生成解决方案”。 这会生成常见的项目文件、Bookstore 服务、Bookstore STS、HomeRealm STS,并在 IIS 中部署这些文件。 这还会生成 Bookstore 客户端应用程序,并将可执行文件 BookStoreClient.exe 置于 FederationSample\BookStoreClient\bin\Debug 文件夹中。
双击 BookStoreClient.exe。 将显示 BookStoreClient 窗口。
可以通过单击“ 浏览书籍”来浏览书店中可用的书籍。
若要购买特定书籍,请在列表中选择该书籍,然后单击“ 购买书籍”。 应用程序通过 HomeRealm 安全令牌服务启动并使用 Windows 身份验证进行身份验证。
该示例配置为允许用户购买花费 15 美元或更少美元的书籍。 尝试购买花费超过 15 美元的书籍会导致客户端从 Book Store Service 收到“拒绝访问”消息。
注释
该示例在购买后不会更新用户的信用额度限制。 可以重复购买用户(固定)额度限制内的书籍。
清理
运行 Cleanup.bat。 这会删除在设置期间创建的虚拟目录,并删除安装过程中安装的证书。