Exemplarische Vorgehensweise zu Ansprüchen: Erstellen eines vertrauenswürdigen Anmeldeanbieters (SAML-Anmeldung) für SharePoint 2010
Zusammenfassung: Erfahren Sie, wie ein benutzerdefinierter Sicherheitstokendienst (STS) erstellt und dann eine Vertrauensstellung zwischen einer SharePoint 2010-Farm und dem benutzerdefinierten STS eingerichtet wird.
Letzte Änderung: Freitag, 12. August 2011
Gilt für: Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio
Inhalt dieses Artikels
Zweck eines vertrauenswürdigen Anmeldeanbieters
Szenario: Ermöglichen des Zugriffs auf eine SharePoint-Website, die in einem Extranet gehostet wird
Schritt 1: Erstellen des Projekts WingtipSTS
Schritt 2: Testen der WingtipSTS-Projektansprüche
Schritt 3: Definieren der vom WingtipSTS-Projekt unterstützten Ansprüche
Schritt 4: Einrichten einer Vertrauensstellung in SharePoint
Schritt 5: Erstellen einer Webanwendung, die das WingtipSTS-Projekt verwendet
Schritt 6: Testen der WingtipSTS-Projektauthentifizierung
Schlussbemerkung
Weitere Ressourcen
Bereitgestellt von: Andy Li, Microsoft Corporation
Inhalt
Zweck eines vertrauenswürdigen Anmeldeanbieters
Szenario: Ermöglichen des Zugriffs auf eine SharePoint-Website, die in einem Extranet gehostet wird
Schritt 1: Erstellen des Projekts WingtipSTS
Schritt 2: Testen der WingtipSTS-Projektansprüche
Schritt 3: Definieren der vom WingtipSTS-Projekt unterstützten Ansprüche
Schritt 4: Einrichten einer Vertrauensstellung in SharePoint
Schritt 5: Erstellen einer Webanwendung, die das WingtipSTS-Projekt verwendet
Schritt 6: Testen der WingtipSTS-Projektauthentifizierung
Schlussbemerkung
Weitere Ressourcen
Downloadcode: Anspruchsauthentifizierungsbeispiel mit vertrauenswürdigem Anmeldeanbieter
Zweck eines vertrauenswürdigen Anmeldeanbieters
In dieser exemplarischen Vorgehensweise erstellen Sie einen benutzerdefinierten Sicherheitstokendienst (STS) und richten dann eine Vertrauensstellung zwischen einer Microsoft SharePoint 2010-Farm und dem benutzerdefinierten STS ein. Der benutzerdefinierte STS fungiert als Authentifizierungsanbieter. Wenn sich die Benutzer bei der SharePoint-Website anmelden, werden sie zuerst zur Anmeldeseite des benutzerdefinierten STS umgeleitet. Nach der Authentifizierung werden sie wieder zu SharePoint umgeleitet.
![]() |
---|
Ein vertrauenswürdiger Anmeldeanbieter ist ein externer (extern für SharePoint) STS, dem SharePoint vertraut. Begriffsdefinitionen zur anspruchsbasierten Authentifizierung finden Sie unter Anspruchsbasierte Identität – Begriffsdefinitionen. Die passive SAML-Anmeldung beschreibt den Anmeldungsprozess. Wenn die Anmeldung für eine Webanwendung konfigurationsgemäß Token von einem vertrauenswürdigen Anmeldeanbieter akzeptiert, wird dieser Anmeldungstyp als passive SAML-Anmeldung bezeichnet. Weitere Informationen finden sie unter Eingehende Ansprüche: Anmelden bei SharePoint. |
Szenario: Ermöglichen des Zugriffs auf eine SharePoint-Website, die in einem Extranet gehostet wird
Das fiktive Unternehmen Contoso hat eine in einem Extranet gehostete SharePoint-Website, bei der sich die Mitarbeiter von zu Hause aus oder von unterwegs auf Geschäftsreisen remote anmelden können. Contoso hat ein Partnerunternehmen namens Wingtip, dessen Mitarbeiter an einem Projekt mit Contoso beteiligt sind und auf Dokumente auf der SharePoint-Website zugreifen müssen.
Um es den Wingtip-Mitarbeitern zu ermöglichen, sich bei der von Contoso gehosteten SharePoint-Website anzumelden, erstellte das Unternehmen Wingtip einen STS, der zur Authentifizierung seiner Mitarbeiter verwendet werden kann. Auf der Contoso-Website hat der Farmadministrator die Vertrauensstellung zwischen der SharePoint-Farm und dem STS von Wingtip eingerichtet. Wenn Mitarbeiter von Wingtip versuchen, sich bei der SharePoint-Website von Contoso anzumelden, werden sie zuerst zur Authentifizierung zu ihrem STS umgeleitet, und dann leitet der STS den angemeldeten Benutzer an die SharePoint-Website von Contoso weiter. Weil die SharePoint-Farm dem Wingtip-STS vertraut, vertraut sie auch dem Sicherheitstoken, das vom Wingtip-STS ausgestellt wird.
Schritt 1: Erstellen des Projekts WingtipSTS
Starten Sie Visual Studio 2010.
Klicken Sie im Menü Datei auf Neues Projekt.
Führen Sie im Dialogfeld Neues Projekt folgende Schritte aus:
Wählen Sie im linken Fensterbereich Andere Projekttypen aus, klicken Sie auf Visual Studio-Projektmappe, und wählen Sie dann im rechten Fensterbereich Leere Projektmappe aus, wie in Abbildung 1 gezeigt.
Geben Sie im Feld Speicherort den Pfad C:\StudentFiles\LabFiles\Module_6\Lab ein.
Geben für die Projektmappe im Feld Name die Zeichenfolge TrustedLogin ein.
Abbildung 1. Dialogfeld "Neues Projekt" in Visual Studio
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe TrustedLogin, klicken Sie auf Hinzufügen und dann auf Neue Website.
Führen Sie im Dialogfeld Neue Website hinzufügen die folgenden Schritte aus:
Wählen Sie die Vorlage Website zum ASP.NET-Sicherheitstokendienst aus.
Ändern Sie Webspeicherort in Dateisystem und den Wert in C:\StudentFiles\LabFiles\Module_6\Lab\TrustedLogin\WingtipSTS.
Abbildung 2. Dialogfeld "Neue Website hinzufügen" in Visual Studio
Öffnen Sie unter der neuen Website die Datei web.config. Ändern Sie im Abschnitt appSettings die Angabe IssuerName in WingtipSTS.
Abbildung 3. Änderung von appSettings
Hinweis
SigningCertificateName (CN=STSTestCert) ist das Zertifikat, das von WingtipSTS zum Signieren des Sicherheitstokens verwendet wird.
Klicken Sie auf Start und dann auf Ausführen.
Geben Sie mmc ein, und drücken Sie die Eingabetaste.
Klicken Sie in der Microsoft Management Console auf Datei und anschließend auf Snap-In hinzufügen/entfernen.
Klicken Sie links im Feld Verfügbare Snap-Ins auf Zertifikate, und klicken Sie dann auf Hinzufügen.
Abbildung 4. In der Microsoft Management Console wird das Zertifikat STSTestCert angezeigt
Klicken Sie im Dialogfeld Zertifikats-Snap-In auf Computerkonto, dann auf Weiter, und wählen Sie danach Lokalen Computer aus.
Klicken Sie auf Fertig stellen, und klicken Sie dann auf OK.
Hinweis
Beachten Sie, dass der Parameter SigningCertificate in web.config auf das Zertifikat zeigt, das hier unter der BezeichnungSTSTestCert angezeigt wird.
Beim Einrichten der Vertrauensstellung zwischen WingtipSTS und SharePoint müssen wir SharePoint mitteilen, welches Zertifikat vom WingtipSTS verwendet wird. Gehen Sie dazu folgendermaßen vor:
Klicken Sie mit der rechten Maustaste auf STSTestCert, wählen Sie Alle Aufgaben aus, und klicken Sie auf Exportieren.
Klicken Sie auf Weiter. Beachten Sie, dass Sie nur den öffentlichen Schlüssel für dieses Zertifikat exportieren können.
Klicken Sie auf Weiter, und wählen Sie dann DER-codiertes binäres X.509 (.CER) aus.
Klicken Sie auf Weiter. Geben Sie im Dialogfeld Zu exportierende Datei als Dateinamen C:\StudentFiles\LabFiles\Module_6\Resources\STSTestCertPub.cert ein.
Klicken Sie auf Weiter und dann auf Fertig stellen.
Schließen Sie Microsoft Management Console.
Schritt 2: Testen der WingtipSTS-Projektansprüche
Klicken Sie mit der rechten Maustaste auf die Projektmappe TrustedLogin, klicken Sie auf Hinzufügen und anschließend auf Neue Website.
Wählen Sie im Dialogfeld Neue Website hinzufügen die Vorlage Vorlage für anspruchsunterstützende ASP.NET-Websites aus. Legen Sie Webspeicherort auf File System und Wert auf C:\StudentFiles\LabFiles\Module_6\Lab\TestRPWeb fest (siehe Abbildung 5).
Abbildung 5. Dialogfeld "Neue Website hinzufügen"
Klicken Sie mit der rechten Maustaste auf das Projekt TestRPWeb, und klicken Sie dann auf STS-Verweis hinzufügen.
Klicken Sie auf der Seite Willkommen des Federation Utility-Assistenten, der geöffnet wurde (siehe Abbildung 6), auf Weiter. Wenn eine Warnung angezeigt wird, die besagt, dass die Anwendung NICHT über eine sichere https-Verbindung gehostet wird, klicken Sie auf Ja.
Abbildung 6. Seite "Willkommen" des Federation Utility-Assistenten
Klicken Sie auf der Seite Security Token Service auf Vorhandenen STS verwenden. Geben Sie https://localhost:48924/WingtipSTS/FederationMetadata/2007-06/FederationMetadata.xml als Speicherort des STS WS-Verbundmetadokuments ein, wie in Abbildung 7 gezeigt.
Hinweis
Diese URL kann in Ihrer Umgebung anders lauten. Um die korrekte URL zu ermitteln, klicken Sie mit der rechten Maustaste im Ordner FederationMetadata/2007-06 in Ihrem Projekt WingtipSTS auf FederationMetadata.xml.
Abbildung 7. Seite "Security Token Services" mit der STS-Option
Klicken Sie auf Weiter und auf Ja in der Meldung zur nicht sicheren Verbindung.
Klicken Sie auf der Seite Sicherheitstokenverschlüsselung auf Keine Verschlüsselung, wie in Abbildung 8 gezeigt.
Abbildung 8. Seite zur Sicherheitstokenverschlüsselung
Klicken Sie auf der Seite Angebotene Ansprüche auf Weiter, wie in Abbildung 9 gezeigt.
Hinweis
In diesem Dialogfeld werden die von Ihnen definierten Anspruchstypen nicht aufgeführt.
Abbildung 9. Auf der Seite "Angebotene Ansprüche" angebotene Ansprüche
Klicken Sie im Dialogfeld Zusammenfassung auf Fertig stellen.
Hinweis
Mit den obigen Schritten werden die notwendigen Einträge der Datei web.config des Projekts WingtipSTS hinzugefügt, sodass die Website den Benutzer zur Website WingtipSTS weiterleitet, die den Benutzer authentifizieren und dessen Ansprüche abrufen soll.
Öffnen Sie die Datei web.config.
Entfernen Sie den Eintrag requestValidationMode="2.0" aus dem Element <httpRuntime>.
Kompilieren Sie das Projekt TestRPWeb, und korrigieren Sie eventuell vorhandene Kompilierungsfehler.
Klicken Sie unter TestRPWeb mit der rechten Maustaste auf Default.aspx, und wählen Sie dann In Browser anzeigen aus. Sie sollten zur Anmeldeseite der Website WingtipSTS weitergeleitet werden, wie in Abbildung 10 gezeigt.
Hinweis
Wenn Sie den Fehler Die Seite kann nicht angezeigt werden erhalten, stellen Sie sicher, dass WingtipSTS in Visual Studio Web Development ausgeführt wird.
Abbildung 10. WingtipSTS-Anmeldeseite
Geben Sie die folgenden Anmeldeinformationen ein:
Benutzername: user1@wingtip.com
Kennwort: pass@word1 (Das Kennwort wird hier nicht überprüft; jedes beliebige Kennwort wird akzeptiert.)
Klicken Sie auf Senden. Sie werden wieder zur TestRPWeb-Site umgeleitet. Default.aspx zeigt alle Ansprüche an, die von WingtipSTS zurückgegeben werden.
Abbildung 11. Von WingtipSTS zurückgegebene Ansprüche
Problembehebung bei einem Umleitungsfehler
Möglicherweise erhalten Sie folgenden Fehler, wenn WingtipSTS Sie wieder zu TestRPWeb umleitet:
ID4175: Der Aussteller des Sicherheitstokens wurde von der IssuerNameRegistry nicht erkannt. Damit die Sicherheitstoken dieses Ausstellers akzeptiert werden, konfigurieren Sie IssuerNameRegistry, sodass ein gültiger Name für diesen Aussteller zurückgegeben wird.
Wenn Sie diesen Fehler erhalten, überzeugen Sie sich davon, dass die Datei web.config unter TestRPWeb den richtigen Fingerabdruck-Wert für STSTestCert enthält.
<issuerNameRegistry
type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry,
Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35">
<trustedIssuers>
<add thumbprint="99fcfe2c70ebb571020ca8aa1b7633dfe1fa1d58" name="https://localhost:48924/WingtipSTS/" />
</trustedIssuers>
</issuerNameRegistry>
Um dies zu überprüfen, öffnen Sie die Zertifikate-MMC und suchen den Fingerabdruck auf der Registerkarte Details des Zertifikats (siehe Abbildung 12).
Abbildung 12. Dialogfeld "Zertifikat" mit Fingerabdruck
Schritt 3: Definieren der vom WingtipSTS-Projekt unterstützten Ansprüche
Fügen Sie eine Klassendatei namens UserInfo.cs dem Ordner App_Code unter dem Projekt WingtipSTS Web Site hinzu.
Fügen Sie die folgende Anweisung using der Datei UserInfo.cs hinzu.
using Microsoft.IdentityModel.Claims;
Fügen Sie den folgenden Code am Ende der Datei UserInfo.cs hinzu. Die WingtipClaimTypes-Klasse definiert die Ansprüche, die von WingtipSTS unterstützt werden.
public class WingtipClaimTypes { // System.IdentityModel.Claims.ClaimTypes.Email; public static string EmailAddress = "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"; public static string Title = "http://schemas.wingtip.com/sharepoint/2009/08/claims/title"; }
Ersetzen Sie die UserInfo-Klasse durch den folgenden Code. Diese Klasse enthält einige Hilfsmethoden, die von WingtipSTS verwendet werden, um die Ansprüche der Benutzer abzurufen und den Benutzer anhand seiner Anmeldeinformationen zu authentifizieren.
Hinweis
Dieser Code dient nur zu Demonstrationszwecken. In einer Produktionsumgebung sollten Sie ihn nicht verwenden.
public class UserInfo { // The email address is used as the UserID. // Every user has two claims: title and email address. // SharePoint will pick up the email claim and treat it as the identity. private static string[] userDB = { "user1@wingtip.com:Title:Engineer", "user1@wingtip.com:Email:user1@wingtip.com", "user2@wingtip.com:Title:Manager", "user2@wingtip.com:Email:user2@wingtip.com", "user3@wingtip.com:Title:CEO", "user3@wingtip.com:Email:user3@wingtip.com", }; // Manually construct a list of users. In a production environment, // you should look up a directory service or database // to retrieve the user information. public static List<string> GetAllUsers() { List<string> allUsers = new List<string>(); // Adding forms-based users. allUsers.Add("user1@wingtip.com"); allUsers.Add("user2@wingtip.com"); allUsers.Add("user3@wingtip.com"); return allUsers; } public static bool AuthenticateUser(string username, string password) { // Add your authentication logic here. return true; } /// <summary> /// A real implementation should look up a directory service or database /// to retrieve a user's claim. The code below is /// used only for demonstration purposes. /// </summary> /// <param name="username"></param> /// <returns></returns> public static List<Claim> GetClaimsForUser(string username) { List<Claim> userClaims = new List<Claim>(); foreach (string userInfo in userDB) { string[] claims = userInfo.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); if (username == claims[0]) { userClaims.Add(new Claim(GetClaimTypeForRole(claims[1]), claims[2], Microsoft.IdentityModel.Claims.ClaimValueTypes.String)); } } return userClaims; } public static string GetClaimTypeForRole(string roleName) { if (roleName.Equals("Title", StringComparison.OrdinalIgnoreCase)) return WingtipClaimTypes.Title; else if (roleName.Equals("Email", StringComparison.OrdinalIgnoreCase)) return WingtipClaimTypes.EmailAddress; else throw new Exception("Claim Type not found!"); } }
Der Code in der Datei UserInfo.cs sieht etwa wie folgt aus.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.IdentityModel.Claims; public class WingtipClaimTypes { // System.IdentityModel.Claims.ClaimTypes.Email; public static string EmailAddress = "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"; public static string Title = "http://schemas.wingtip.com/sharepoint/2009/08/claims/title"; } public class UserInfo { // The email address is used as the UserID. // Every user has two claims: title and email address. // SharePoint will pick up the email claim and treat it as identity. private static string[] userDB = { "user1@wingtip.com:Title:Engineer", "user1@wingtip.com:Email:user1@wingtip.com", "user2@wingtip.com:Title:Manager", "user2@wingtip.com:Email:user2@wingtip.com", "user3@wingtip.com:Title:CEO", "user3@wingtip.com:Email:user3@wingtip.com", }; // Manually construct a list of users. In a production environment, // you should look up a directory service or database to retrieve // the user information. public static List<string> GetAllUsers() { List<string> allUsers = new List<string>(); //Adding forms-based users. allUsers.Add("user1@wingtip.com"); allUsers.Add("user2@wingtip.com"); allUsers.Add("user3@wingtip.com"); return allUsers; } public static bool AuthenticateUser(string username, string password) { // Add your authentication logic here. return true; } /// <summary> /// A real implementation should look up a directory service or database /// to retrieve a user's claim. The code below is used /// only for demonstration purposes. /// </summary> /// <param name="username"></param> /// <returns></returns> public static List<Claim> GetClaimsForUser(string username) { List<Claim> userClaims = new List<Claim>(); foreach (string userInfo in userDB) { string[] claims = userInfo.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); if (username == claims[0]) { userClaims.Add(new Claim(GetClaimTypeForRole(claims[1]), claims[2], Microsoft.IdentityModel.Claims.ClaimValueTypes.String)); } } return userClaims; } public static string GetClaimTypeForRole(string roleName) { if (roleName.Equals("Title", StringComparison.OrdinalIgnoreCase)) return WingtipClaimTypes.Title; else if (roleName.Equals("Email", StringComparison.OrdinalIgnoreCase)) return WingtipClaimTypes.EmailAddress; else throw new Exception("Claim Type not found!"); } }
Doppelklicken Sie unter App_Code auf die Datei CustomSecurityTokenService.cs, um sie zu öffnen.
Fügen Sie den Namespace-Verweis auf System.Collections hinzu.
Ersetzen Sie die GetOutputClaimsIdentity-Funktion durch den folgenden Code. Dies ist die Funktion, die den Anspruch des Benutzers zurückgibt.
protected override IClaimsIdentity GetOutputClaimsIdentity( IClaimsPrincipal principal, RequestSecurityToken request, Scope scope ) { if ( null == principal ) { throw new ArgumentNullException( "principal" ); } ClaimsIdentity outputIdentity = new ClaimsIdentity(); // Issue custom claims. // TODO: Change the claims below to issue custom claims // that are required by your application. // Update the application's configuration file to reflect // the new claims requirements. // outputIdentity.Claims.Add( new Claim( System.IdentityModel.Claims.ClaimTypes.Name, principal.Identity.Name ) ); // outputIdentity.Claims.Add( new Claim( ClaimTypes.Role, "Manager" ) ); // The Wingtip implementation. string username = principal.Identity.Name; List<Claim> claims = UserInfo.GetClaimsForUser(username); foreach (Claim claim in claims) { outputIdentity.Claims.Add(claim); } return outputIdentity; }
Kompilieren Sie die WingtipSTS-Website, und korrigieren Sie eventuell vorhandene Kompilierungsfehler.
Schritt 4: Einrichten einer Vertrauensstellung in SharePoint
Im Grunde besteht die Einrichtung einer Vertrauensstellung zwischen WingtipSTS und SharePoint darin, WingtipSTS als SPTrustedLoginProvider-Objekt in der SharePoint-Farm zu registrieren.
Klicken Sie auf der Zentraladministration-Site im linken Navigationsbereich auf Sicherheit.
Klicken Sie unter Allgemeine Sicherheit auf Vertrauensstellung verwalten.
Klicken Sie bei Menüband für die Serverkomponente auf Neu.
Geben Sie im Dialogfeld Vertrauensstellung einrichten im Textfeld Name den Namen STSTestCert ein, sodass er wie in Abbildung 13 dargestellt angezeigt wird.
Abbildung 13. Einrichten einer Vertrauensstellung in der Zentraladministration
Klicken Sie auf Durchsuchen, und suchen Sie die Datei STSTestCertPub.cer, die Sie zuvor exportiert haben.
Klicken Sie auf OK.
Hinweis
Schritt 4 ermöglicht es SharePoint, allen Zertifikaten zu vertrauen, die auf das STSTestCert-Stammzertifikat zurückgehen.
Fügen Sie ein WinForm-Projekt namens RegisterSTSder Projektmappe TrustedLogin hinzu.
Hinweis
Vergessen Sie nicht, Zielplattform in All CPU und .NET Framework in 3.5 zu ändern.
Klicken Sie mit der rechten Maustaste auf das Projekt RegisterSTS, und klicken Sie dann auf Als Startprojekt festlegen.
Fügen Sie dem Formular eine Schaltfläche hinzu, und ändern Sie die Eigenschaft Text der Schaltfläche in Register WingtipSTS.
Doppelklicken Sie auf die Schaltfläche. Sie gelangen damit zur Ereignishandlerfunktion der Schaltfläche.
Ersetzen Sie die Button1_Click-Funktion durch den folgenden Code. Der Code erstellt ein SPTrustedLoginProvider-Objekt und fügt es der SPSecurityTokenServiceManager.TrustedLoginProviders-Auflistung hinzu.
Hinweis
Sie können auch Windows PowerShell-Skripts verwenden, um einen STS bei SharePoint zu registrieren. Nähere Informationen finden Sie unter Cmdlets für die Sicherheit (SharePoint Foundation 2010).
Der Code leistet Folgendes:
Es werden die Ansprüche definiert, die von SharePoint anerkannt werden (in diesem Beispiel email und title).
idClaim definiert, welcher Anspruchstyp zur eindeutigen Identifizierung eines Benutzers verwendet wird.
Die AddKnownClaimValue-Funktion der SPTrustedClaimTypeInformation-Klasse fügt die bekannten Anspruchswerte dem Anspruchstyp hinzu, damit diese später bei der Suche nach Ansprüchen in der Personenauswahl gefunden werden.
'Ein X509Certificate2-Objekt verweist auf den öffentlichen Schlüssel, den wir zuvor exportiert haben.
Denken Sie daran, im Konstruktor der SPTrustedLoginProvider-Klasse den URI des WingtipSTS zu ändern (die Anschlussnummer kann anders lauten; der WingtipSTS in diesem Beispiel wird unter der URL https://localhost:48924/WingtipSTS/default.aspx gehostet).
Vorsicht
Vergessen Sie nicht die Angabe default.aspx in der URL.
Sie können ein benutzerdefiniertes SPClaimProvider-Objekt für das SPTrustedLoginProvider-Objekt erstellen und es mit SPTrustedLoginProvider.ClaimProviderName registrieren (im folgenden Code ist dies als Kommentar gekennzeichnet). Andernfalls erstellt SharePoint automatisch ein SPTrustdClaimProvider-Objekt (das von der SPClaimProvider-Klasse abgeleitet ist) für dieses SPTrustedLoginProvider-Objekt. Dieses SPTrustdClaimProvider-Objekt basiert auf der Angabe des Anspruchstyps, die im Registrierungscode bereitgestellt wurde.
https://intranet.contoso.com/\_trust/ ist die URL, zu der der Benutzer weitergeleitet wird, nachdem er vom STS authentifiziert wurde.
private void button1_Click(object sender, EventArgs e) { List<SPTrustedClaimTypeInformation> claimMapping = new List<SPTrustedClaimTypeInformation>(); List<string> strClaimMapping = new List<string>(); SPTrustedClaimTypeInformation idClaim = new SPTrustedClaimTypeInformation("EmailAddress", "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"); SPTrustedClaimTypeInformation titleClaim = new SPTrustedClaimTypeInformation("Title", "http://schemas.wingtip.com/sharepoint/2009/08/claims/title", "http://schemas.wingtip.com/sharepoint/2009/08/claims/title"); titleClaim.AcceptOnlyKnownClaimValues = true; idClaim.AddKnownClaimValue("user1@wingtip.com"); idClaim.AddKnownClaimValue("user2@wingtip.com"); idClaim.AddKnownClaimValue("user3@wingtip.com"); titleClaim.AddKnownClaimValue("Engineer"); titleClaim.AddKnownClaimValue("Manager"); titleClaim.AddKnownClaimValue("CEO"); // Create the string[] for all claims. This is required for // the construction of the SPTrustedLoginProvider object. strClaimMapping.Add(idClaim.InputClaimType); strClaimMapping.Add(titleClaim.InputClaimType); X509Certificate2 ImportTrustCertificate = new X509Certificate2(@"C:\StudentFiles\LabFiles\Module_6\Resources\STSTestCertPub.cer"); claimMapping.Add(idClaim); claimMapping.Add(titleClaim); SPSecurityTokenServiceManager manager = SPSecurityTokenServiceManager.Local; SPTrustedLoginProvider provider = new SPTrustedLoginProvider(manager, "WingtipSTS","WingtipSTS",new Uri("https://localhost:48924/WingtipSTS/default.aspx"), "https://intranet.contoso.com/_trust/", strClaimMapping.ToArray(),idClaim); foreach (SPTrustedClaimTypeInformation claimTypeInfo in claimMapping) { if (claimTypeInfo.InputClaimType == provider.IdentityClaimTypeInformation.InputClaimType) { continue; } provider.AddClaimTypeInformation(claimTypeInfo); } if (ImportTrustCertificate != null) { provider.SigningCertificate = ImportTrustCertificate; } //provider.ClaimProviderName = "ContosoCRMClaimProvider"; provider.UseWReplyParameter = true; manager.TrustedLoginProviders.Add(provider); manager.Update(); }
Erstellen Sie das Projekt RegisterSTS, und führen Sie es aus.
Klicken Sie auf die Schaltfläche, um den vertrauenswürdigen Anmeldeanbieter bei der Farm zu registrieren.
Schritt 5: Erstellen einer Webanwendung, die das WingtipSTS-Projekt verwendet
Wechseln Sie zur Seite "SharePoint 2010-Zentraladministration".
Klicken Sie im Abschnitt Anwendungsverwaltung auf Webanwendungen verwalten.
Klicken Sie auf dem Menüband auf Neu.
Klicken Sie im Dialogfeld Neue Webanwendung erstellen unter Authentifizierung auf Anspruchsbasierte Authentifizierung.
Ändern Sie im Abschnitt IIS-Website unter Neue IIS-Website erstellen den Eintrag im Feld Name in SharePoint – Trusted.
Ändern Sie die Nummer im Feld Anschluss in 443.
Klicken Sie im Abschnitt Sicherheitskonfiguration unter Security Socket Layer (SSL) verwenden, auf Ja, wie in Abbildung 14 gezeigt.
Führen Sie im Abschnitt Forderungsauthentifizierungstypen folgende Schritte aus:
Klicken Sie auf Windows-Authentifizierung aktivieren.
Klicken Sie auf Integrierte Windows-Authentifizierung.
Klicken Sie in der Dropdownliste auf NTLM.
Klicken Sie auf Trusted Identity Provider.
Klicken Sie auf WingtipSTS.
Abbildung 14. Dialogfeld "Neue Webanwendung erstellen"
Wählen Sie unter Anwendungspool den vorhandenen Pool AppPool : SharePointAppPool aus.
Ändern Sie im Abschnitt Datenbankname und Authentifizierung den Datenbanknamen in WSS_Content_443. Übernehmen Sie für die anderen Einstellungen die Standardwerte.
Klicken Sie auf OK, um die Webanwendung zu erstellen.
Nachdem die SSL-Webanwendung erstellt wurde, klicken Sie auf Anwendungsverwaltung und dann auf Websitesammlung erstellen.
Ändern Sie die Webanwendung in https://intranet.contoso.com.
Geben Sie als Titel Trusted ein.
Klicken Sie bei Primärer Websitesammlungsadministrator auf "Durchsuchen".
In der Personenauswahl unter WingtipSTS gehen Sie wie folgt vor:
Hinweis
Wie oben erwähnt, ist der WingtipSTS-Anspruchsanbieter vom Typ SPTrustedClaimProvder. Er wird von SharePoint bei der Registrierung von SPTrustedLoginProvider automatisch generiert.
Wählen Sie EmailAddress aus. Wie in Abbildung 15 gezeigt, sind drei Einträge verfügbar.
Wählen Sie user1@wingtip.com aus, und klicken Sie auf OK.
Abbildung 15. Personenauswahl
Klicken Sie auf OK, um die Websitesammlung zu erstellen.
Schritt 6: Testen der WingtipSTS-Projektauthentifizierung
![]() |
---|
Bevor Sie diesen Test ausführen, vergewissern Sie sich, dass das Projekt WingtipSTS aktuell ausgeführt wird. Sie können mit der rechten Maustaste auf das Projekt WingtipSTS klicken und dann In Browser anzeigen wählen, oder Sie können das Projekt auf einer IIS-Website (Internet Information Services) bereitstellen. |
Wechseln Sie zu https://intranet.contoso.com.
Klicken Sie in der Dropdownliste Mehrere Authentifizierungsmethoden auf WingtipSTS (siehe Abbildung 16).
Abbildung 16. Auswählen von WingtipSTS in der Dropdownliste
Sie werden zur Anmeldeseite der WingtipSTS-Website umgeleitet (siehe Abbildung 17).
Abbildung 17. Anmeldeseite der WingtipSTS-Website
Geben Sie die Anmeldeinformationen für den Websiteadministrator ein, d. h. user1@wingtip.com.
Nach der Authentifizierung werden Sie wieder zur SharePoint-Website umgeleitet (siehe Abbildung 18).
Abbildung 18. Nach der Authentifizierung zurück zur SharePoint-Website
Stellen Sie ein Webpart bereit, das Sie erstellt haben, und fügen Sie es der Startseite hinzu. Notieren Sie die Ansprüche, die dem Benutzer hinzugefügt werden.
Klicken Sie im Menü Websiteaktionen auf Websiteeinstellungen und dann auf Benutzer und Gruppen. Klicken Sie auf user1@wingtip.com, und suchen Sie nach dem Kontonamen. Notieren Sie die Antworten für folgende Fragen:
Welche Anspruchstypen werden für user1@wingtip.com angegeben?
Wie lautet der Kontoname von user1@wingtip.com?
Was bedeuten die einzelnen Zeichen im Kontonamen? (Dekodieren Sie den Kontonamen manuell oder mithilfe eines Programms.)
Wählen Sie auf dem Menüband unter Websiteaktionen den Eintrag Websiteberechtigungen aus, und klicken Sie dann auf Berechtigungen erteilen. Klicken Sie auf die Schaltfläche Durchsuchen, um das Dialogfeld "Personenauswahl" zu öffnen.
Klicken Sie unter WingtipSTS auf Titel.
Geben Sie Manager, ein, und klicken Sie auf Suchen.
Doppelklicken Sie in den Suchergebnissen auf Manager, um den Eintrag "Manager" der Benutzerliste hinzuzufügen, und klicken Sie dann auf Hinzufügen, wie in Abbildung 19 gezeigt.
Abbildung 19. Dialogfeld "Personenauswahl" mit den Titeln der WingtipSTS-Mitarbeiter
Schließen Sie alle Internet Explorer-Instanzen, um das Cookie für die anspruchsbasierte Authentifizierungssitzung aus dem Speicher zu löschen.
Öffnen Sie eine neue Instanz von Internet Explorer, und navigieren Sie zu https://intranet.contoso.com.
Versuchen Sie, sich als user2@wingtip.com anzumelden. Können Sie sich anmelden? Was geschieht, wenn Sie user3@wingtip.com verwenden?
Schlussbemerkung
In dieser exemplarischen Vorgehensweise erfahren Sie, wie ein benutzerdefinierter Sicherheitstokendienst erstellt wird und wie dann eine Vertrauensstellung zwischen einer SharePoint-Farm und dem benutzerdefinierten STS eingerichtet wird. Der benutzerdefinierte STS fungiert als Authentifizierungsanbieter. Wenn sich Benutzer bei der SharePoint-Website anmelden, werden sie zuerst zur Anmeldeseite des benutzerdefinierten STS und nach der Authentifizierung wieder zurück zu SharePoint umgeleitet.
Weitere Ressourcen
Weitere Informationen finden Sie in den folgenden Ressourcen:
Sicherheitsbezogene Blogs, Ressourcencenter und SharePoint-Foren
Exemplarische Vorgehensweise zu Ansprüchen: Schreiben von Anspruchsanbietern für SharePoint 2010
Tipps zu Ansprüchen – 1: Informationen zur anspruchsbasierten Authentifizierung in SharePoint 2010
Tipp 2 zu Ansprüchen: Informationen zur anspruchsbasierten Authentifizierung in SharePoint 2010
Planung, Aktualisierung, Migration, Verwaltung, Konfiguration und Installation für SharePoint 2010