Vorgehensweise: Programmgesteuertes Aktivieren von WIF auf einem WCF-Dienst
Windows® Identity Foundation (WIF) bietet eine einfache Integration mit Windows Communication Foundation (WCF). Ein WCF-Dienst kann daher WIF-Funktionen wie das neue Anspruchsmodell verwenden und unterstützt zusätzliche Sicherheitstokentypen (SAML 2.0) sowie die Verarbeitung der Token. In diesem Thema wird dieser Vorgang veranschaulicht.
So aktivieren Sie Windows Identity Foundation in einem selbst gehosteten WCF-Dienst
Fügen Sie in Visual Studio dem WCF-Dienstprojekt einen Verweis auf die WIF-Assembly (
Microsoft.IdentityModel.dll
) hinzu.Fügen Sie Code hinzu, der die ConfigureServiceHost-Methode aufruft und an eine Diensthostinstanz übergibt, für die WIF aktiviert werden soll. Sie müssen dies vor dem Aufrufen von
ServiceHost.Open()
für diese Instanz ausführen. Mit dieser Methode werden die notwendigen Änderungen an den ServiceHost-Instanzeinstellungen vorgenommen, um die WIF-Funktionen in die WCF-Nachrichtenverarbeitungspipeline zu integrieren.Hinweis
Sie sollten ConfigureServiceHost nur aufrufen, nachdem Sie die Konfiguration von
ServiceHost
abgeschlossen haben. Wenn Sie zum Beispiel das Dienstzertifikat fürServiceHost.Credentials
aktualisieren, nachdem Sie ConfigureServiceHost aufgerufen haben, wird die Aktualisierung in SecurityTokenHandler nicht berücksichtigt.
Im folgenden Codebeispiel wird dies veranschaulicht:
using (ServiceHost host = new ServiceHost(typeof(ClaimsAwareWebService), new Uri("https://localhost:6020/ClaimsAwareWebService"))) { // Konfigurieren von WIF auf dem Diensthost. // Hierdurch wird versucht, die Datei "web.config/app.config" zu lesen und // Einstellungen aus dem Konfigurationsabschnitt <Microsoft.IdentityModel> zu laden. FederatedServiceCredentials.ConfigureServiceHost(host);
host.Open();
Console.WriteLine(“Service is ready, press ENTER to close ...”); Console.ReadLine();
host.Close() }
So aktivieren Sie Windows Identity Foundation in einem im Web gehosteten WCF-Dienst
Sie können Ihren im Web gehosteten Dienst für die Verwendung von WIF konfigurieren, indem Sie folgende Konfigurationsänderungen vornehmen:
Fügen Sie eine
<behaviorConfiguration>
hinzu (wenn nicht bereits vorhanden):<service name="Service" behaviorConfiguration="ClaimsBehavior"> ... </service>
Verweisen Sie in der Konfiguration auf das Verhalten:
<behaviors> <serviceBehaviors> <behavior name="ClaimsBehavior" > <!-- Verhaltenserweiterung zur Unterstützung von Ansprüchen --> <federatedServiceHostConfiguration/> </behavior> </serviceBehaviors> </behaviors>
Definieren Sie das Verhalten als Erweiterung:
<extensions> <behaviorExtensions> <!-- Diese Verhaltenserweiterung ermöglicht dem Diensthost das Unterstützen von Ansprüchen --> <add name="federatedServiceHostConfiguration" type="Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </behaviorExtensions> </extensions>