Datenbankzugriff in SharePoint 2013 mit BCS und SQL-Login

Mit dieser Anleitung will ich zeigen, wie man mit dem Secure Store in SharePoint auf Datenbanken über ein SQL-Login zugreifen kann.

Ausgangslage

Ich habe auf einem MS-SQL Server die wohl bekannte NorthWind Datenbank eingerichtet. Auf die Datenbank hat mein Benutzer busitec\eiben Zugriff und es gibt einen SQL-Benutzer mit dem Login „northwnd“.

Externer Inhaltstyp

Zunächst einmal muss der externe Inhaltstyp – wie von Simon auch schon beschrieben – angelegt werden.

image

image

Danach kann man im Vorgangsdesigner eine neue SQL-Verbindung angeben. Hier sind also der Name des SQL-Server (ggf. mit Instanz) und der Name der Datenbank anzugeben. Zudem kann der Verbindung optional noch ein eigene Name gegeben werden.

image

Zunächst wird hier für die Verbindung die Identität des Benutzers verwendet. In diesem Fall bin das also ich, also der Benutzer unter dem der SharePoint-Designer ausgeführt wird.

image

Nun werden alle Tabelle der Datenbank angezeigt. In diesem Fall erstelle ich aus dem Designer alle Vorgänge für die Tabelle „Customers“.

image

Alle Vorgänge bedeutet, dass Operationen zur Listenansicht (zum Lesen aller Elemente und Anzeige in der Listenansicht), zum Lesen eines einzelnen Elements (zur Anzeige in der Dispform oder Editform), zum Aktualisieren eine Elemente (nach der Bearbeitung in der Editform) und zum Erstellen eines neue Elements (durch die Newform) angelegt werden.

Nun können auf Basis dieses externen Inhaltstypes eine Liste und Formulare erstellt werden.

2015-03-20 10_10_41-Liste und Formular für _NorthWind Kunden_ erstellen

Ganz wichtig ist, dass auf dem neu erstellen BCS-Model noch keine Berechtigungen vergeben wurden. Somit kann bisher noch niemand auf die Daten zugreifen. Falls jemand bereits auf die Liste zugreift wird er eine Fehlermeldung von SharePoint erhalten. Also müssen in der Zentraladministration im Business Conectivity Service noch Berechtigungen für das Model vergeben werden.

2015-03-20 10_12_46-Select People and Groups - Internet Explorer

Wenn man nun im SharePoint auf die Liste zugreift, dann erhält man nicht wie erwartet die Liste der Kundendaten.

2015-03-20 10_13_37-Customers - Neuer externer Inhaltstyp (2) Liste lesen - Internet Explorer

Wenn wir noch einmal die Authentifizierungseinstellungen im SharePoint Designer ansehen, dann steht hier, dass der Zugriff auf die Datenbank durch die Windows-Identität des Benutzers erfolgen soll.

image

Das setzt voraus, dass Kerberos-(Constrained-)Delegation eingerichtet wurde. In meinem Fall haben aber nicht alle Benutzer Zugriff auf die Datenbank sondern ich möchten eine dedizierten SQL-Benutzer für die Zugriffe verwenden. Wie man an dem Dialog oben erkennen kann, habe ich hier aber keine Möglichkeit einen Benutzernamen oder Password anzugeben, geschweigen denn, dass ich den kompletten Connection-String angeben kann.

Secure-Store To The Rescue

Zunächst ändern wie die Authentifizierungseinstellungen auf Benutzerdefinierte Identität annehmen und definieren eine Anwendungs-ID für den Secure-Store (in diesem Fall „NorthWindSqlLogin“)

image

Anschließend erstellen wir in der Zentraladministration eine neue Secure-Store Anwendung mit eben diesem Namen „NorthWindSqlLogin“.

2015-03-20 10_16_20-Create New Secure Store Target Application

Im nächsten Schritt geben wir an, welche Felder im Secure-Store zu der Anwendung abgelegt werden sollen. Standardmäßig sind das die Felder Benutzer und Password, wobei das Passwort vom Typ „Windows Password“ ist. Wichtig: dass muss auf „Password“ geändert werden!

2015-03-20 10_16_49-Create New Secure Store Target Application

Anschließend kann noch ein Administrator für die Anwendung bestimmt werden – dieser kann später Benutzername und Passwort der Anwendung vergeben und angeben, wer alles diesen Secure-Store-Eintrag lesen kann.

2015-03-20 10_17_54-

Nun kann für den neuen Eintrag ein Benutzername und Passwort eingegeben und im Secure-Store gespeichert werden.

2015-03-20 10_19_48-

Finale

Beim abschließenden Zugriff auf die Liste werden wie erwartet die Kundendaten aus der NorthWind Datenbank angezeigt.

image

Damit die Anmeldung über das SQL-Login passiert ist es wichtig, dass in der Secure-Store Anwendung das Passwort als „Passwort“ und nicht als „Windows Passwort“ abgespeichert wird. Ansonsten würde eine Authentifizierung mit einem Windows-Account versucht werden – das mag ggf. auch gewollt sein, wenn man z.B. alle Zugriffe auf eine Datenbank über einen einzelnen Windows-Account machen will, aber in diesem Fall war ja explizit ein SQL-Login gewünscht.

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.