Exemplarische Vorgehensweise zu Ansprüchen: Erstellen der formularbasierten Authentifizierung für anspruchsbasierte SharePoint 2010-Webanwendungen mithilfe benutzerdefinierter Mitgliedschafts- und Rollenanbieter
Zusammenfassung: Lernen Sie, formularbasierte Authentifizierung für anspruchsbasierte Webanwendungen mithilfe eines benutzerdefinierten Mitgliedschafts- und Rollenanbieters zu erstellen.
Letzte Änderung: Freitag, 18. Januar 2013
Gilt für: Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio
Inhalt dieses Artikels
Übersicht über das Authentifizieren anspruchsbasierter Webanwendungen mithilfe von benutzerdefinierten Mitgliedschafts- und Rollenanbietern
Schritt 1: Überprüfen des Codes des Mitgliedschafts- und Rollenanbieters
Schritt 2: Erstellen und Bereitstellen des Mitgliedschafts- und Rollenanbieters
Schritt 3: Erstellen einer SharePoint-Webanwendung
Schritt 4: Konfigurieren des Mitgliedschafts- und Rollenanbieters für die SharePoint-Webanwendung
Schritt 5: Testen der formularbasierten Authentifizierung
Schritt 6: Anzeigen der Ansprüche
Schlussbemerkung
Weitere Ressourcen
Bereitgestellt von: Andy Li, Microsoft Corporation
Inhalt
Übersicht über das Authentifizieren anspruchsbasierter Webanwendungen mithilfe von benutzerdefinierten Mitgliedschafts- und Rollenanbietern
Schritt 1: Überprüfen des Codes des Mitgliedschafts- und Rollenanbieters
Schritt 2: Erstellen und Bereitstellen des Mitgliedschafts- und Rollenanbieters
Schritt 3: Erstellen einer SharePoint-Webanwendung
Schritt 4: Konfigurieren des Mitgliedschafts- und Rollenanbieters für die SharePoint-Webanwendung
Schritt 5: Testen der formularbasierten Authentifizierung
Schritt 6: Anzeigen der Ansprüche
Schlussbemerkung
Weitere Ressourcen
Code zum Herunterladen: ClaimsExample-UsingCustomMembershipandRoleProvider
Übersicht über das Authentifizieren anspruchsbasierter Webanwendungen mithilfe von benutzerdefinierten Mitgliedschafts- und Rollenanbietern
In dieser exemplarischen Vorgehensweise erstellen Sie eine anspruchsbasierte Webanwendung mithilfe eines benutzerdefinierten Mitgliedschafts- und Rollenanbieters als Authentifizierungsanbieter.
Die formularbasierte Authentifizierung stellt eine benutzerdefinierte Identitätsverwaltung in Microsoft SharePoint 2010 bereit, indem ein Mitgliedschaftsanbieter implementiert wird, der die Schnittstellen zum Identifizieren und Authentifizieren einzelner Benutzer definiert, und ein Rollen-Manager, der die Schnittstellen zum Gruppieren einzelner Benutzer in logische Gruppen und Rollen definiert.
In diesem Artikel wird davon ausgegangen, dass Sie mit der formularbasierten Authentifizierung vertraut sind. Weitere Informationen zur formularbasierten Authentifizierung finden Sie unter Forms Authentication in SharePoint Products and Technologies (Part 1): Introduction.
Schritt 1: Überprüfen des Codes des Mitgliedschafts- und Rollenanbieters
Überprüfen Sie zunächst den Code für den Mitgliedschafts- und Rollenanbieter.
So überprüfen Sie den Code für den Mitgliedschafts- und Rollenanbieter
Öffnen Sie das Projekt ContosoProviders aus dem zu diesem Artikel gehörigen Codebeispieldownload: Code zum Herunterladen: ClaimsExample-UsingCustomMembershipandRoleProvider.
Hinweis
Das Projekt enthält die Definition für die Mitgliedschafts- und Rollenanbieter, die für die anspruchsbasierte Webanwendung verwendet werden.
Öffnen Sie die Datei Members.cs.
Hinweis
Der Mitgliedschaftsanbieter ist als ContosoProviders.Members definiert. UserDB ist ein Zeichenfolgenarray zur Simulation der Benutzerdatenbank.
private static string[] UserDB = { "user1:user1@contoso.com", "user2:user2@contoso.com", "user3:user3@contoso.com", "user4:user4@contoso.com", "user5:user5@contoso.com", "user6:user6@contoso.com" };
Überprüfen Sie die folgenden beiden Methoden.
public override MembershipUser GetUser(string username, bool userIsOnline) public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
Mit diesen Methoden wird das auf dem Benutzernamen basierende MembershipUser-Objekt abgerufen.
Überprüfen Sie die folgenden beiden Methoden.
public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords) public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
Diese beiden Methoden werden von der SharePoint-Personenauswahl aufgerufen, wenn der Benutzer versucht, Benutzernamen zu suchen oder aufzulösen.
Überprüfen Sie die ValidateUser-Methode.
public override bool ValidateUser(string username, string password)
Mit dieser Methode werden die Anmeldeinformationen des Benutzers überprüft. In diesem Beispiel für einen Mitgliedschaftsanbieter wird lediglich das Vorhandensein des Benutzers (und nicht das Kennwort) überprüft.
Hinweis
In einer Produktionsumgebung sollten Sie das Benutzerkennwort überprüfen. Dieses Beispiel dient nur zu Demonstrationszwecken und sollte nicht in einer Produktionsumgebung verwendet werden.
Öffnen Sie die Datei Roles.cs:
Der Rollenanbieter ist als ContosoProviders.Roles definiert.
Das UserRoleDB-Array und das RoleDB-Array werden zur Simulation des Benutzer- und Rollenspeichers verwendet.
private static string[] UserRoleDB = { "user1:Role1:Role2:Role3", "user2:Role2:Role4", "user3:Role3:Role1:Role4", "user4:Role4:Role1:Role2", "user5:Role2:Role1", "user6:Role1:Role4" }; private static string[] RoleDB = { "Role1", "Role2", "Role3", "Role4" };
Die RoleExists (string rolename)-Eigenschaft dient zur Suche oder Auflösung von Rollennamen.
Hinweis
Für Rollen werden keine Platzhalter unterstützt.
Die GetRolesForUser-Methode wird von SharePoint beim Anmeldevorgang aufgerufen, um die Anspruchsinformationen (Rollen) des Benutzers abzurufen.
Schritt 2: Erstellen und Bereitstellen des Mitgliedschafts- und Rollenanbieters
Erstellen Sie als Nächstes den Mitgliedschafts- und Rollenanbieter, und stellen Sie ihn bereit.
So erstellen Sie den Mitgliedschafts- und Rollenanbieter und stellen ihn bereit
Klicken Sie mit der rechten Maustaste auf das Projekt ContosoProviders, und klicken Sie dann auf Neu erstellen.
Stellen Sie ContosoProviders.dll im globalen Assemblycache bereit.
Schritt 3: Erstellen einer SharePoint-Webanwendung
Erstellen Sie nun die SharePoint-Webanwendung.
So erstellen Sie eine SharePoint-Webanwendung
Wechseln Sie zur Seite SharePoint 2010-Zentraladministration.
Klicken Sie im Abschnitt Anwendungsverwaltung auf Webanwendungen verwalten.
Klicken Sie auf dem Menüband für die Serverkomponente 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 – Benutzerdefinierte FBA.
Ändern Sie die Portnummer in 500.
Führen Sie im Abschnitt Forderungsauthentifizierungstypen folgende Schritte aus:
Klicken Sie auf Formularbasierte Authentifizierung (FBA) aktivieren.
Deaktivieren Sie andere Authentifizierungsmodi.
Geben Sie in den Feldern für den Mitgliedschaftsanbieter und den Rollen-Manager die folgenden Namen wie angegeben in Kleinbuchstaben ein:
Name des ASP.NET-Mitgliedschaftsanbieters: custommembershipprovider
Name des ASP.NET-Rollen-Managers: customroleprovider
Wir haben die Mitgliedschafts- und Rollenanbieter noch nicht eingerichtet. Dies geschieht in nachfolgenden Schritten.
Ändern Sie die URL in http://intranet.contoso.com:500.
Wählen Sie unter Anwendungspool die Option Vorhandenen Anwendungspool verwenden: SharePointAppPool aus.
Ändern Sie im Abschnitt Datenbankname und Authentifizierung den Datenbanknamen in WSS_Content_500.
Übernehmen Sie für die anderen Einstellungen die Standardwerte.
Klicken Sie auf OK, um die Webanwendung zu erstellen.
Schritt 4: Konfigurieren des Mitgliedschafts- und Rollenanbieters für die SharePoint-Webanwendung
Sie müssen drei web.config-Dateien ändern:
Zentraladministration: Zulassen der Suche nach Websitesammlungen
Sicherheitstokendienst: Zulassen der Anmeldung und Ausstellen von Token
FBA-Webanwendung: Zulassen der Suche in der lokalen Webanwendung
So konfigurieren Sie den Mitgliedschafts- und Rollenanbieter für die SharePoint-Webanwendung
Fügen Sie in der web.config-Datei für die Website der benutzerdefinierten FBA-Webanwendung im Providers-Element des <membership>-Tags den folgenden Eintrag hinzu.
<add name="custommembershipprovider" type="ContosoProviders.Members, ContosoProviders, Version=1.0.0.0, Culture=neutral, PublicKeyToken=26fc91a86676aa9f" />
Nachdem Sie den Wert für den Anbieter hinzugefügt haben, sollte die web.config-Datei Abbildung 1 gleichen.
Abbildung 1. Anbieterwert für die benutzerdefinierte FBA-Webanwendung
Fügen Sie das folgende Rollen-Manager-Element zum Providers-Element hinzu, das sich unter dem <RoleManager>-Abschnitt befindet (siehe Abbildung 2).
<add name="customroleprovider" type="ContosoProviders.Roles, ContosoProviders, Version=1.0.0.0, Culture=neutral, PublicKeyToken=26fc91a86676aa9f" />
Abbildung 2. Rollen-Manager-Wert für die benutzerdefinierte FBA-Webanwendung
Wiederholen Sie die vorherigen Schritte für die Websites Zentraladministration und SecurityTokenServiceApplication.
Hinweis
Die web.config-Datei für die SharePoint STS-Website enthält keinen <system.web>-Abschnitt. Sie müssen den Abschnitt manuell hinzufügen. Ein Beispiel für web.config-Dateien finden Sie im Code zum Herunterladen: ClaimsExample-CreateFormsBasedAuthentication, der zum Artikel Exemplarische Vorgehensweise zu Ansprüchen: Erstellen der formularbasierten Authentifizierung für anspruchsbasierte SharePoint 2010-Webanwendungen mithilfe von ASP.NET SQL-Mitgliedschafts- und Rollenanbietern bereitgestellt wird.
Schritt 5: Testen der formularbasierten Authentifizierung
Testen Sie nun die formularbasierte Authentifizierung.
So testen Sie die formularbasierte Authentifizierung
Klicken Sie auf der Website für die Zentraladministration unter Anwendungsverwaltung auf Websitesammlung erstellen.
Wählen Sie in der Dropdownliste Webanwendung die benutzerdefinierte FBA-Webanwendung http://intranet.contoso.com:500 aus.
Abbildung 3. Konfigurieren der benutzerdefinierten FBA-Webanwendung
Ändern Sie den Titel in Benutzerdefinierte FBA-Website, wie in Abbildung 3 dargestellt.
Klicken Sie im Feld Benutzername auf das Symbol Durchsuchen, um den oben hinzugefügten Benutzer zu suchen.
Wählen Sie im linken Bereich Formularauthentifizierung aus, geben Sie im Suchfeld user1 ein, und klicken Sie dann auf die Suchschaltfläche, wie in Abbildung 4 dargestellt.
Abbildung 4. Suchen nach "user1" mithilfe der Personenauswahl
Doppelklicken Sie im Ergebnisbereich auf user1. Dadurch kehren Sie zur Seite zum Erstellen der Websitesammlung zurück.
Klicken Sie auf OK, um die Websitesammlung zu erstellen.
Wechseln Sie zu http://intranet.contoso.com:500. Die Anmeldeseite sollte angezeigt werden, wie in Abbildung 5 dargestellt.
Abbildung 5. Anmeldeseite
Geben Sie user1 als Benutzernamen ein, und klicken Sie dann auf Anmelden. (Das Kennwort kann beliebig gewählt werden.)
Beachten Sie, dass nach der Anmeldung in der rechten oberen Ecke der Benutzername user1 angezeigt wird, wie in Abbildung 6 dargestellt.
Abbildung 6. Benutzername in der rechten oberen Ecke
Schritt 6: Anzeigen der Ansprüche
Zeigen Sie als Nächstes die Ansprüche an.
So zeigen Sie die Ansprüche an
Erstellen Sie ein Webpart. Ersetzen Sie die RenderContent-Funktion durch den folgenden Code (siehe auch die Datei FBAClaimsViewer.cs aus dem Download zu diesem Artikel).
Hinweis
Unter Umständen müssen Sie einen Verweis auf Microsoft.IdentityModel.dll sowie den Namespace Microsoft.IdentityModel.Claims hinzufügen.
protected override void RenderContents(HtmlTextWriter writer) { try { IClaimsIdentity currentIdentity = System.Threading.Thread.CurrentPrincipal.Identity as IClaimsIdentity; writer.Write("---Subject:" + currentIdentity.Name + "<BR/>"); foreach (Claim claim in currentIdentity.Claims) { writer.Write(" ClaimType: " + claim.ClaimType + "<BR/>"); writer.Write(" ClaimValue: " + claim.Value + "<BR/"); writer.Write(" ClaimValueTypes: " + claim.ValueType + "<BR/>"); writer.Write(" Issuer: " + claim.Issuer + "<BR/"); writer.Write(" OriginalIssuer: " + claim.OriginalIssuer + "<BR/>"); writer.Write(" Properties: " + claim.Properties.Count.ToString() + "<BR/>"); } } catch (Exception ex) { writer.Write("exception occurred: " + ex.Message); } }
Stellen Sie die Lösung bereit, und fügen Sie der Homepage der Webanwendung der FBA-Website das Webpart hinzu.
Die Ausgabe sollte ungefähr wie in Abbildung 7 aussehen.
Abbildung 7. Informationen zu Anspruchstyp und Anspruchswert
Beachten Sie die folgenden drei Ansprüche:
ClaimType: https://schemas.microsoft.com/ws/2008/06/identity/claims/role ClaimValue: Role1 Issuer: SharePoint Properties: 0 ClaimType: https://schemas.microsoft.com/ws/2008/06/identity/claims/role ClaimValue: Role2 Issuer: SharePoint Properties: 0 ClaimType: https://schemas.microsoft.com/ws/2008/06/identity/claims/role ClaimValue: Role3 Issuer: SharePoint Properties: 0
Der Rollenanspruch wird von ContosoProviders.Roles abgerufen.
Klicken Sie auf dem Menüband unter Websiteaktionen auf Websiteberechtigungen, und klicken Sie dann auf Berechtigungen erteilen. Klicken Sie auf das Symbol Durchsuchen, um das Dialogfeld Personenauswahl zu öffnen.
Geben Sie role2 ein, und klicken Sie dann auf Suchen, wie in Abbildung 8 gezeigt.
Abbildung 8. Suchen nach "role2" in der Personenauswahl
Versuchen Sie, role2 zur Members-Gruppe hinzuzufügen, und überprüfen Sie dann Folgendes:
Wer kann sich nun bei der Website anmelden? Warum?
Versuchen Sie, sich mithilfe der Benutzer in role2 anzumelden, und beobachten Sie, ob Probleme auftreten.
Schlussbemerkung
Die formularbasierte Authentifizierung stellt eine benutzerdefinierte Identitätsverwaltung in Microsoft SharePoint Server 2010 bereit. In dieser exemplarischen Vorgehensweise lernen Sie, formularbasierte Authentifizierung für anspruchsbasierte Webanwendungen mithilfe eines benutzerdefinierten Mitgliedschafts- und Rollenanbieters zu erstellen.
Weitere Ressourcen
Weitere Informationen finden Sie in den folgenden Ressourcen:
Forms Authentication in SharePoint Products and Technologies (Part 1): Introduction
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, Upgrade, Migration, Verwaltung, Konfiguration und Setup