Freigeben über


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

Klicken Sie, um Code abzurufen. 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

  1. Öffnen Sie das Projekt ContosoProviders aus dem zu diesem Artikel gehörigen Codebeispieldownload: Code zum Herunterladen: ClaimsExample-UsingCustomMembershipandRoleProvider.

    HinweisHinweis

    Das Projekt enthält die Definition für die Mitgliedschafts- und Rollenanbieter, die für die anspruchsbasierte Webanwendung verwendet werden.

  2. Öffnen Sie die Datei Members.cs.

    HinweisHinweis

    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"
            };
    
  3. Ü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.

  4. Ü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.

  5. Ü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.

    HinweisHinweis

    In einer Produktionsumgebung sollten Sie das Benutzerkennwort überprüfen. Dieses Beispiel dient nur zu Demonstrationszwecken und sollte nicht in einer Produktionsumgebung verwendet werden.

  6. Ö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"
    };
    
  7. Die RoleExists (string rolename)-Eigenschaft dient zur Suche oder Auflösung von Rollennamen.

    HinweisHinweis

    Für Rollen werden keine Platzhalter unterstützt.

  8. 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

  1. Klicken Sie mit der rechten Maustaste auf das Projekt ContosoProviders, und klicken Sie dann auf Neu erstellen.

  2. 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

  1. Wechseln Sie zur Seite SharePoint 2010-Zentraladministration.

  2. Klicken Sie im Abschnitt Anwendungsverwaltung auf Webanwendungen verwalten.

  3. Klicken Sie auf dem Menüband für die Serverkomponente auf Neu.

  4. Klicken Sie im Dialogfeld Neue Webanwendung erstellen unter Authentifizierung auf Anspruchsbasierte Authentifizierung.

  5. Ändern Sie im Abschnitt IIS-Website unter Neue IIS-Website erstellen den Eintrag im Feld Name in SharePoint – Benutzerdefinierte FBA.

  6. Ändern Sie die Portnummer in 500.

  7. Führen Sie im Abschnitt Forderungsauthentifizierungstypen folgende Schritte aus:

    • Klicken Sie auf Formularbasierte Authentifizierung (FBA) aktivieren.

    • Deaktivieren Sie andere Authentifizierungsmodi.

  8. 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.

  9. Ändern Sie die URL in http://intranet.contoso.com:500.

  10. Wählen Sie unter Anwendungspool die Option Vorhandenen Anwendungspool verwenden: SharePointAppPool aus.

  11. Ändern Sie im Abschnitt Datenbankname und Authentifizierung den Datenbanknamen in WSS_Content_500.

  12. Übernehmen Sie für die anderen Einstellungen die Standardwerte.

  13. 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

  1. 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

    Anbieterwert für die benutzerdefinierte FBA-Webanwendung

  2. 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

    Rollen-Manager-Wert für die benutzerdefinierte FBA-Webanwendung

  3. Wiederholen Sie die vorherigen Schritte für die Websites Zentraladministration und SecurityTokenServiceApplication.

    HinweisHinweis

    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

  1. Klicken Sie auf der Website für die Zentraladministration unter Anwendungsverwaltung auf Websitesammlung erstellen.

  2. Wählen Sie in der Dropdownliste Webanwendung die benutzerdefinierte FBA-Webanwendung http://intranet.contoso.com:500 aus.

    Abbildung 3. Konfigurieren der benutzerdefinierten FBA-Webanwendung

    Konfigurieren der benutzerdefinierten FBA-Webanwendung

  3. Ändern Sie den Titel in Benutzerdefinierte FBA-Website, wie in Abbildung 3 dargestellt.

  4. Klicken Sie im Feld Benutzername auf das Symbol Durchsuchen, um den oben hinzugefügten Benutzer zu suchen.

  5. 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

    Suchen nach 'user1' mithilfe der Personenauswahl

  6. Doppelklicken Sie im Ergebnisbereich auf user1. Dadurch kehren Sie zur Seite zum Erstellen der Websitesammlung zurück.

  7. Klicken Sie auf OK, um die Websitesammlung zu erstellen.

  8. Wechseln Sie zu http://intranet.contoso.com:500. Die Anmeldeseite sollte angezeigt werden, wie in Abbildung 5 dargestellt.

    Abbildung 5. Anmeldeseite

    Anmeldeseite

  9. Geben Sie user1 als Benutzernamen ein, und klicken Sie dann auf Anmelden. (Das Kennwort kann beliebig gewählt werden.)

  10. 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

    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

  1. 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).

    HinweisHinweis

    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);
        }
    
    }
    
  2. Stellen Sie die Lösung bereit, und fügen Sie der Homepage der Webanwendung der FBA-Website das Webpart hinzu.

  3. Die Ausgabe sollte ungefähr wie in Abbildung 7 aussehen.

    Abbildung 7. Informationen zu Anspruchstyp und Anspruchswert

    Informationen zu Anspruchstyp und Anspruchswert

  4. 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.

  5. 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.

  6. Geben Sie role2 ein, und klicken Sie dann auf Suchen, wie in Abbildung 8 gezeigt.

    Abbildung 8. Suchen nach "role2" in der Personenauswahl

    Suchen nach 'role2' in der Personenauswahl

  7. 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: