Freigeben über


WCF: Bestimmen der Identität des Aufrufers in WCF-Webdiensten (Teil 2 von 4)

Zusammenfassung:   In dieser vierteiligen Reihe erfahren Sie, wie Benutzer in Microsoft SharePoint Foundation 2010 authentifiziert werden. Lernen Sie, die Identität des Aufrufers eines Webdiensts für Windows Communication Foundation (WCF) zu bestimmen, den Sie als externen Inhaltstyp in Microsoft Business Connectivity Services (BCS) verwenden.

Letzte Änderung: Mittwoch, 12. Januar 2011

Verfügbar in SharePoint Online

Inhalt dieses Artikels
Einführung
Erstellen des Beispiels
Schlussbemerkung
Weitere Ressourcen

Gilt für: Business Connectivity Services | Office 2010 | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

Inhalt

  • Einführung

  • Erstellen des Beispiels

  • Schlussbemerkung

  • Weitere Ressourcen

Bei diesem Artikel handelt es sich um den zweiten in einer vierteiligen Reihe, in der das Erstellen und Implementieren eines Ansprüche unterstützenden Webdiensts mithilfe der Business-Konnektivitätsdienste (Business Connectivity Services) beschrieben wird.

Einführung

Windows Identity Foundation (WIF) bietet umfassendere Steuerungsmöglichkeiten für die Identitätslogik. Mit WIF können Sie die Identität des Aufrufers innerhalb eines Webdiensts bestimmen. In diesem Artikel wird das Beispiel aus dem vorherigen Artikel der Reihe, WCF: Erstellen von WCF-Webdiensten für SharePoint 2010 Business Connectivity Services (Teil 1 von 4), um die Bestimmung der Aufruferidentität erweitert. Bei jedem Aufruf des Webdiensts wird die Identität des aufrufenden Benutzers an eine Protokolldatei angefügt. Sie können dann die Protokolldatei untersuchen, um die Identität des Aufrufers zu ermitteln.

Erstellen des Beispiels

So erstellen Sie das Beispiel

  1. Laden Sie Windows Identity Foundation herunter, und installieren Sie es. Installieren Sie WIF auf demselben Computer, auf dem Sie den Webdienst für Windows Communication Foundation (WCF) erstellt haben.

  2. Öffnen Sie zum Erstellen des Webdiensts das Projekt, das Sie im ersten Artikel der Reihe, WCF: Erstellen von WCF-Webdiensten für SharePoint 2010 Business Connectivity Services (Teil 1 von 4), erstellt haben.

  3. Fügen Sie einen Verweis auf die [Microsoft.IdentityModel]-Assembly hinzu. Klicken Sie in Microsoft Visual Studio 2010 oder Visual Studio 2008 auf Projekt, und klicken Sie dann auf Verweis hinzufügen.

  4. Klicken Sie auf die Registerkarte Durchsuchen. Wechseln Sie zu %ProgramFiles%\Reference Assemblies\Microsoft\Windows Identity Foundation\v3.5.

    Abbildung 1. Speicherort der Windows Identity Foundation-Assemblys

    Wechseln zum Speicherort der WIF-Assemblys

  5. Wählen Sie Microsoft.IdentityModel.dll aus, und klicken Sie dann auf OK.

    Abbildung 2. Auswählen der Windows Identity Framework-DLL

    Auswählen der Windows Identity Framework-DLL

  6. Ersetzen Sie den Inhalt von Customers.svc.cs durch den folgenden Code.

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using Microsoft.IdentityModel.Claims;
    
    namespace CustomersService
    {
        public class Customers : ICustomers
        {
            private const string IdentityClaimType = @"https://schemas.microsoft.com/sharepoint/2009/08/claims/userid";
    
            private string GetIdentity()
            {
                string identityName = String.Empty;
                IClaimsIdentity claimsIdentity = 
                  System.Threading.Thread.CurrentPrincipal.Identity as IClaimsIdentity;if (claimsIdentity != null)
                {
                    // claim
                    foreach (Claim claim in claimsIdentity.Claims)
                    {
                        if (String.Equals(IdentityClaimType, claim.ClaimType, 
                          StringComparison.OrdinalIgnoreCase))
                        {
                            identityName = claim.Value;
                            break;
                        }
                    }
                }
                else
                {
                    identityName = System.Threading.Thread.CurrentPrincipal.Identity.Name;
                }
    
                return identityName;
            }
    
            // Finder
            public List<Customer> GetAllCustomers()
            {
                string id = GetIdentity();
                File.AppendAllText(@"C:\MyWebService\log.txt", 
                  string.Format("GetAllCustomers: Identity: {0}", id) + Environment.NewLine);
                return new List<Customer>()
                {
                    new Customer
                    {
                        CustomerID = 1,
                        CustomerName = "Bob",
                    },
                    new Customer
                    {
                        CustomerID = 2,
                        CustomerName = "Bill",
                    },
                    new Customer
                    {
                        CustomerID = 3,
                        CustomerName = "Cheryl",
                    },
                };
            }
    
            // Specific finder
            public Customer GetCustomerByID(int CustomerID)
            {
                string id = GetIdentity();
                File.AppendAllText(@"C:\MyWebService\log.txt", 
                  string.Format("GetCustomerByID: Identity: {0}", id) + Environment.NewLine);
                return GetAllCustomers().FirstOrDefault(c => c.CustomerID == CustomerID);
            }
        }
    }
    
  7. Erstellen Sie die Anwendung erneut. Da der neu erstellte Dienst in Internetinformationsdienste (IIS) gehostet wird, muss er nicht gesondert aktiviert werden.

  8. Verwenden Sie wcftestclient, um den Webdienst zu testen.

  9. Starten Sie eine Visual Studio-Eingabeaufforderung.

  10. Geben Sie wcftestclient ein, um den WCF-Testclient auszuführen.

  11. Klicken Sie auf Datei und dann auf Dienst hinzufügen.

  12. Geben Sie https://localhost/Customers/Customers.svc als Endpunktadresse ein, und klicken Sie dann auf OK.

    Abbildung 3. Eingeben der Endpunktadresse im WCF-Testclient

    Eingeben der Endpunktadresse in den WCF-Testclient

    Wenn der Dienst erfolgreich hinzugefügt wurde, werden die von dem Dienst verfügbar gemachten Methoden angezeigt.

    Abbildung 4. WCF-Testclient mit Methoden

    WCF-Testclient mit Methoden

  13. Doppelklicken Sie auf die GetAllCustomers-Methode. Dadurch wird ein Fenster geöffnet, in dem Sie die Anforderung konfigurieren und aufrufen können.

  14. Klicken Sie auf Aufrufen, um die GetAllCustomers-Methode aufzurufen.

    Abbildung 5. Daten im WCF-Testclient

    WCF-Testclient mit Daten

  15. Wechseln Sie nach dem Aufrufen des Webdiensts zu C:\MyWebService, und untersuchen Sie log.txt. Die Protokolldatei sieht etwa folgendermaßen aus:

    GetAllCustomers: Identity: CONTOSO\ericwhite
    

Schlussbemerkung

In diesem Artikel haben Sie den zweiten von vier Schritten ausgeführt, mit denen ein Ansprüche unterstützender Webdienst erstellt und mithilfe der Business-Konnektivitätsdienste (Business Connectivity Services) verwendet wird. Sie haben den in WCF: Erstellen von WCF-Webdiensten für SharePoint 2010 Business Connectivity Services (Teil 1 von 4) erstellten Webdienst durch zusätzlichen Code verbessert, in dem mit WIF die Identität des Aufrufers bestimmt und in eine Protokolldatei geschrieben wird. Im nächsten Artikel, WCF: Einrichten einer Vertrauensstellung zwischen WCF-Webdiensten und dem Sicherheitstokendienst von SharePoint 2010 (Teil 3 von 4), führen Sie Verfahren zum Einrichten einer Vertrauensstellung zwischen dem Webdienst und dem SharePoint 2010-Sicherheitstokendienst (Security Token Service, STS) aus.

Weitere Ressourcen