建立 WCF 信賴憑證者應用程式
在 Web 服務內啟用 Windows Identity Foundation
WIF 提供與 WCF 輕鬆整合的方式。 如此可讓 WCF 服務使用 WIF 的功能,例如新的宣告模型、對其他安全性權杖類型 (SAML 2.0) 的支援,以及權杖處理。 本節說明如何進行這項整合。
在自行主控的 WCF 服務中啟用 Windows Identity Foundation
在 Visual Studio 中,將 WIF 組件 (
Microsoft.IdentityModel.dll
) 的參考新增至 WCF 服務專案。新增呼叫
ConfigureServiceHost
方法的程式碼,並於其中傳入要啟用其 WIF 的服務主機執行個體。 您必須在該執行個體上呼叫ServiceHost.Open()
之前執行這項操作。 這個方法會對ServiceHost
執行個體設定進行必要的變更,以便將 WIF 的功能與 WCF 訊息處理管線進行整合。 下面程式碼範例會示範如何執行這項操作:
using (ServiceHost host = new ServiceHost(typeof(ClaimsAwareWebService), new Uri("https://localhost:6020/ClaimsAwareWebService"))) { // 設定服務主機上的 WIF FederatedServiceCredentials.ConfigureServiceHost(host);
host.Open();
Console.WriteLine(“Service is ready, press ENTER to close ...”); Console.ReadLine();
host.Close() }
在 Web 主控的 WCF 服務中啟用 Windows Identity Foundation
在 Visual Studio 中,將 WIF 組件 (
Microsoft.IdentityModel.dll
) 的參考新增至 WCF 服務專案。建立繼承自
ServiceHostFactory
的新類別。覆寫
CreateServiceHost
方法。 在實作中,先呼叫base.CreateServiceHost( string, Uri[] )
來建立ServiceHost
執行個體。 然後執行應用程式所需之ServiceHost
執行個體的任何程式設計設定。 接著呼叫ConfigureServiceHost
以便在該ServiceHost
執行個體上啟用 WIF 功能。 最後傳回設定的執行個體,做為CreateServiceHost
方法的傳回值。
下面程式碼範例示範針對建立的 ServiceHost
啟用 WIF 功能的自訂 ServiceHostFactory
:
public class MyServiceHostFactory : ServiceHostFactory { public override ServiceHostBase CreateServiceHost( string constructorString, Uri[] baseAddresses ) { ServiceHostBase host = base.CreateServiceHost( constructorString, baseAddresses ); FederatedServiceCredentials.ConfigureServiceHost( host ); return host; } }
由於自訂的服務主機 Factory 會用來在 Web 主控的 WCF 服務中啟用 WIF 功能,因此用來代表 WCF 服務端點的 .svc 檔必須使用 factory
屬性參考此服務主機 Factory,如下所示:
<%@ServiceHost language=C# Factory="Service1.MyServiceHostFactory" Service="Service1.Service1"%>