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.
WCF: Erstellen von WCF-Webdiensten für SharePoint 2010 Business Connectivity Services (Teil 1 von 4)
WCF: Bestimmen der Identität des Aufrufers in WCF-Webdiensten (Teil 2 von 4) (Dieser Artikel)
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
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.
Ö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.
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.
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
Wählen Sie Microsoft.IdentityModel.dll aus, und klicken Sie dann auf OK.
Abbildung 2. Auswählen der Windows Identity Framework-DLL
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); } } }
Erstellen Sie die Anwendung erneut. Da der neu erstellte Dienst in Internetinformationsdienste (IIS) gehostet wird, muss er nicht gesondert aktiviert werden.
Verwenden Sie wcftestclient, um den Webdienst zu testen.
Starten Sie eine Visual Studio-Eingabeaufforderung.
Geben Sie wcftestclient ein, um den WCF-Testclient auszuführen.
Klicken Sie auf Datei und dann auf Dienst hinzufügen.
Geben Sie https://localhost/Customers/Customers.svc als Endpunktadresse ein, und klicken Sie dann auf OK.
Abbildung 3. Eingeben der Endpunktadresse im 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
Doppelklicken Sie auf die GetAllCustomers-Methode. Dadurch wird ein Fenster geöffnet, in dem Sie die Anforderung konfigurieren und aufrufen können.
Klicken Sie auf Aufrufen, um die GetAllCustomers-Methode aufzurufen.
Abbildung 5. Daten im WCF-Testclient
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
Developer Center: Windows Identity Foundation Developer Center
Download: Windows Identity Foundation
Developer Center: SharePoint Developer Center
Blog: Blog von Eric White