In diesem Artikel möchte ich euch zeigen, wie die SharePoint FBA Authentifizierung konfiguriert wird. Die Authentifizierung von Benutzern soll dabei nicht gegen das Active Directory gehen, sondern gegen eine SQL-Datenbank, in dem die Benutzer hinterlegt sind.
Dieses Szenario wird sehr gerne eingesetzt, wenn es z.B. darum geht externe Benutzern den Zugriff auf den SharePoint zu ermöglichen, die aber nicht im Active Directory des Unternehmens gepflegt werden sollen.
Für die SharePoint FBA Authentifizierung benötigt man zuerst eine entsprechende Datenbank, in der die Benutzerverwaltung stattfinden kann. Hierfür gibt es einen entsprechenden Wizard auf den SharePoint Servern, der genutzt werden kann. Die aspnet_regsql.exe
ist unter dem Pfad C:\Windows\Microsoft.NET\Framework64\v4.0.30319
zu finden.
Danach kann man sich durch den Wizard klicken und eine entsprechende Datenbank erstellen.
Zuerst entscheidet man sich für die erste Option, um eine neue Datenbank zu erstellen.
Im nächsten Schritt wird die Datenbankverbindung konfiguriert und der Name der Datenbank festgelegt. Bei der Datenbankverbindung empfiehlt es sich wie immer einen entsprechenden SQL-Alias zu nutzen.
Danach wird noch einmal die Zusammenfassung der Konfiguration angezeigt und die Datenbank kann erstellt werden.
Wenn kein Fehler bei der Konfiguration (Meistens fehlerhafte Datenverbindung oder fehlende Berechtigung auf der SQL-Instanz) auftritt, sollten wir am Ende diese Meldung sehen.
Somit haben wir die notwendige Datenbank für die Authentifizierung erfolgreich angelegt. War gar nicht so schwer, oder? 🙂
Im nächsten Schritt müssen wir auf Datenbank-Ebene noch Berechtigungen setzten. Das Dienstkonto unter der die Webanwendung im SharePoint läuft, muss noch als db_owner
auf der gerade angelegten Datenbank eingetragen werden.
Nun haben wir alle Vorbereitungen getroffen, um die Datenbank zur Authentifizierung zu nutzen. Allerdings haben wir momentan noch das kleine Problem, wie man Benutzer anlegen kann. Es gibt dafür auch entsprechende Lösungen, wie z.B. das SharePoint 2013 FBA Pack auf Codeplex. Allerdings kann man dies auch mit „Boardmitteln“ erreichen, was ich euch in diesem Artikel zeigen möchte.
Zuerst legen wir dafür eine neue Webseite im IIS an.
Beim Port sollte man natürlich einen auswählen, den man bisher noch nicht verwendet. Nachdem wir die Seite angelegt haben, müssen wir noch das Konto des zugehörigen Anwendungspools ändern. Dieser muss auf das gleiche Dienstkonto gesetzt werden, wie auch die zugehörige SharePoint Webanwendung.
Danach müssen wir eine Datenbankverbindung für die neu angelegte Seite hinzufügen. Die neue Datenbankverbindung stellt die Verbindung zur anfänglich erstellten Datenbank her.
Auf der rechten Seite kann man nun eine Datenbankverbindung hinzufügen. Beim Server ist es wie immer empfehlenswert, einen entsprechenden SQL-Alias zu verwenden.
Danach können wir einen entsprechenden Provider zur Verwaltung der SharePoint FBA Authentifizierung hinzufügen. Zuerst muss man den Provider für die Benutzer selbst erstellen. Die Auswahl erfolgt über die Auswahlbox oben links (.NET Users
).
Als Typ muss der SqlMembershipProvider
gewählt werden. Der Name kann frei vergeben werden. Die Eigenschaften können entsprechend konfiguriert werden. Wichtig hierbei ist, dass man die Passwörter der Benutzer verschlüsselt in der Datenbank hinterlegt und die zuvor angelegte Datenbankverbindung nutzt.
Nun kann endlich ein neuer Benutzer angelegt werden. Dies funktioniert über die .NET Users
Funktionalität. Man muss allerdings noch den standardmäßigen Provider auf den gerade erstellten Provider ändern.
Danach kann über den Hinzufügen
Button auf der rechten Seite neue Benutzer angelegt werden.
Optional kann man auch noch entsprechende Rollen zur Verwaltung der Benutzer nutzen. Dazu muss wieder ein Provider erstellt werden, analog zu den Benutzern.
Um die Rollen verwalten zu können, nutzt man die .NET Roles
Funktionalität. Auch hier muss zuerst der standardmäßige Provider ausgewählt werden.
Danach können analog zu den Benutzern neue Rollen definiert werden und einem Benutzer zugeordnet werden.
Nachdem wir nun die Benutzer und Rollen verwalten können, müssen wir noch den SharePoint entsprechend konfigurieren. Dazu muss die web.config
der SharePoint Webanwendung um die notwendigen Informationen ergänzt werden. Es müssen hierfür die notwendigen Provider eingetragen werden und der People Picker von SharePoint konfiguriert werden.
Der People Picker Abschnitt muss um den neuen Provider ergänzt werden.
Danach müssen die Provider für die Benutzer und Rollen hinzugefügt werden. Die Namen können frei vergeben werden, müssen aber konsistent sein.
Und hier die beiden zusätzlichen Zeilen zum einfacheren kopieren. Die Sonderzeichen sind gewollt. 🙂
<add connectionStringName="fbaSQL_01" applicationName="/" name="SQL_Membership_01" type="System.Web.Security.SqlMembershipProvider, System.Web, 
Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" enablePasswordReset="true" passwordFormat="Hashed" requiresQuestionAndAnswer="false" /> <add connectionStringName="fbaSQL_01" applicationName="/" name="SQL_Role_01" type="System.Web.Security.SqlRoleProvider, System.Web, 
Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
Am Schluss muss noch die Datenbankverbindung am Ende der web.config
hinzugefügt werden.
Danach muss nur noch der Authentifizierungsanbieter für die SharePoint FBA Authentifizierung über die SharePoint Zentraladministration konfiguriert werden.
Bei der Authentifizierung muss FBA aktiviert werden und die Namen eingetragen werden, die auch in der web.config
genutzt wurden. Hier kann auch ggf. eine eigene Login Seite definiert werden, wenn dies gewünscht ist.
Wurde FBA aktiviert, kommt beim Aufruf des SharePoints nun folgende Auswahlmaske, um die Art der Authentifizierung auszuwählen.
Beim ersten Login sollte man sich mit einem Windows Benutzer anmelden und dem FBA Benutzer entsprechende Rechte zuweisen. Danach kann sich auch dieser ganz normal anmelden.
In diesem Sinne, Happy SharePointing…
Hallo Frank,
ich kann keine .net User anlegen, da es immer wieder heißt „The specified password is invalid. Type a new password“
Hast du eine Idee dazu?
Danke
Hallo Arzu,
für mich klingt es danach, dass das Passwort nicht komplex genug ist. Entweder mal ein Passwort mit „normaler Windows-Komplexität“ probieren oder Du kannst auch die Komplexität im SqlMembershipProvider noch zusätzlich definieren.
Hallo Frank,
wie kann man denn im Nachhinein noch User anlegen?
Gruß
Entweder über die IIS Oberfläche, hier müsstest Du evtl. eine eigene Site anlegen zur Verwaltung. Alternativ gibt es auch eine Lösung von Codeplex (https://sharepoint2016fba.codeplex.com/ oder https://sharepoint2013fba.codeplex.com/). Dann geht die Verwaltung direkt in der SharePoint Oberfläche, sieht aber nicht ganz so zeitgemäß aus, funktioniert aber.
HAllo Frank,
ich habe mich der ganzen Sache nach einiger Zeit wieder angenommen.
Habe mich jetzt als Windows user angemeldet, um den externen User Rechte zu vergeben. Wie mache ich das?
Ich habe mal auf „Share“ geklickt und versucht den User einzutragen, wird aber nicht akzeptiert. Sowohl via Namen als auch via E-Mail-Adresse gibt es Fehlermeldungen.
We couldn’t find an exact match.
Sorry, you are not allowed to share this with external users. (Wo ist hier noch was einzustellen?)
Herzlichen Dank für diese tolle Anleitung und auch deine Hilfe
Viele Grüße
Hallo Arzu,
also entweder ein Problem mit dem People Picker oder Du hast nicht beide Provider (FBA und Windows) aktiviert.
Ansonsten müsste man im ULS Log eher ein Hinweis finden, was genau das Problem ist.
Viele Grüße
Frank
Hallo Frank, das Problem hat sich gelöst. Herzlichen Dank!
Nun aber folgendes Problem:
Wenn sich der externe User einloggen möchte, kommt die Fehlermeldung:
The server could not sign you in. Make sure your user name and password are correct, and then try again.
Müsste ich den IIS resetten bevor sich jeder neu angelegte User anmelden kann? Ansonsten sind Username und Password eigentlich richtig eingegeben.
Vielen Dank
Muss ich vielleicht auch die web.configs der STS und der Zentraladministration anpassen?
Die Zentraladministration nicht zwingend, außer Du benötigst die externen Benutzer dort auch.
STS musst Du mittlerweile ebenfalls mit anpassen. Wenn das der Fehler ist, sollte dieser auch ganz klar im ULS Logs zu finden sein.
[…] Authentifizierung) per LDAP ein bisschen näher erläutern. In einem meiner früheren Beiträge hatte ich das Vorgehen bereits für die SharePoint FBA in Verbindung einer SQL-Datenbank […]