2017-06-14 3 views
0

Ich bin auf der Suche nach Vorschlägen, wie Entwickler die Identität eines angemeldeten Benutzers an die Datenbank übergeben, wenn sie Aktualisierungen vornehmen.Azure SQL und Web Application Benutzeridentität

Um es einfach zu halten, stellen Sie sich vor, wir verwenden einfachen ADO.NET SQLCommand, um einige Zeilen in eine Protokolltabelle einzufügen. Die Zeile hat eine UserId-Spalte, die mit dem angemeldeten Benutzer ausgefüllt werden muss, anstatt mit der generischen userId, die für die Verbindungszeichenfolge verwendet wird.

Offensichtlich könnte der SQLCommand in einem Parameter von "UserId" akzeptieren und einfach verwenden. Aber ich frage mich, ob es bessere Möglichkeiten zum Speichern gibt, die man manuell für jeden Befehl übergeben muss.

Ich habe mit Azure AD untersucht, um ADFS für die Anmeldung in der Webanwendung bereitzustellen, und dann diese Identität für die Verbindungszeichenfolge zur Datenbank verwenden. Das funktioniert gut, aber ich bin besorgt, dass wir einem Benutzerkonto der Anwendung direkten Zugriff auf die Datenbank geben - das könnte in Ordnung sein, scheint aber ein Risiko zu sein. Wenn es einem böswilligen Benutzer gelang, SSMS auf unseren DB-Server zu bekommen, hätten sie einen Benutzernamen und ein Passwort, die sie verwenden könnten.

Außerdem, wenn wir AD nicht verwenden, um unsere Benutzerkonten zu verwalten - ASP.Net Mitgliedschaft zum Beispiel ... was können wir hier tun? Sind ihre Eigenschaften zur Verbindungszeit einstellbar?

Dank David

Antwort

1

Überprüfen Sie die neue SESSION_CONTEXT() Funktion aus, die nur für dieses Szenario hinzugefügt.

0

Bitte verwenden Sie T-SQL-Aufrufe sp_who oder wählen suser_name() Sie die aktuelle Login eines Benutzers zeigen, wer conneted und tun T-SQL-Operation Dank Mirek