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

  1. Fügen Sie in Visual Studio dem WCF-Dienstprojekt einen Verweis auf die WIF-Assembly (Microsoft.IdentityModel.dll) hinzu.

  2. 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ür ServiceHost.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>