聯合範例
Windows Communication Foundation (WCF) 透過 wsFederationHttpBinding 提供部署聯合安全性架構的支援。wsFederationHttpBinding 提供安全、可靠以及可互通的繫結,其中包括使用 HTTP 做為要求/回覆通訊的基礎傳輸機制,以及採用文字/XML 做為編碼的 Wire 格式。這個範例將示範聯合安全性。如需 WCF 中有關聯合的詳細資訊,請參閱Federation in Windows Communication Foundation。
本案例由 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='https://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='https://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 作業。
請參閱下列指示,以瞭解如何安裝和執行這個範例。
若要設定、建置及執行範例
開啟 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 視窗隨即顯示。
- 您可以按一下 [瀏覽書籍],瀏覽書店中展售的書籍。
- 若要購買特定書籍,請選取清單中的書籍,再按一下 [購買書籍]。應用程式隨即啟動,然後會使用 Windows 驗證向 HomeRealm 安全性權杖服務進行驗證。
此範例已設定為允許使用者購買價值在 $15 (含) 以下的書籍。嘗試購買價值超過 $15 的書籍,會導致用戶端從「書店服務」(Book Store Service) 收到「拒絕存取」訊息。注意:
此範例不會在使用者購買之後更新其信用額度限制。您可以在使用者的 (固定) 信用額度限制以內重複購買書籍。
執行 Cleanup.bat。這會刪除安裝期間建立的虛擬目錄,也會移除安裝期間所安裝的憑證。
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.