Verbindungszeichenfolge mit Windows-Authentifizierung

132

Ich erstelle eine Website, aber in der Datenbank verwende ich die Windows-Authentifizierung.

Ich weiß, dass Sie dies für die SQL-Authentifizierung verwenden

<connectionStrings> 
    <add name="NorthwindContex" 
       connectionString="data source=localhost;
       initial catalog=northwind;persist security info=True; 
       user id=sa;password=P@ssw0rd" 
       providerName="System.Data.SqlClient" /> 
</connectionStrings>

Wie ändere ich dies, um mit der Windows-Authentifizierung zu arbeiten?

MDC
quelle

Antworten:

192

Ersetzen Sie den Benutzernamen und das Passwort durch Integrated Security=SSPI;

So sollte die Verbindungszeichenfolge sein

<connectionStrings> 
<add name="NorthwindContex" 
   connectionString="data source=localhost;
   initial catalog=northwind;persist security info=True; 
   Integrated Security=SSPI;" 
   providerName="System.Data.SqlClient" /> 
</connectionStrings> 
Köpfe5150
quelle
1
Ich weiß, dass Sie einen bestimmten AD-Benutzer auf App-Pool (Web-App) einstellen können. können Sie das gleiche für Windows App tun?
user384080
6
Persist Security Infowird wahrscheinlich nicht benötigt: stackoverflow.com/a/2010059/1869660
Sphinxxx
@ Heads5150: Ist es möglich, dass mein Projekt keine Verbindungszeichenfolgen enthält? Vermisse ich etwas? Ich habe meine gesamte Lösung durchsucht, um eine Verbindungszeichenfolge wie oben zu finden. Ich konnte keine finden. Die, die ich gegründet habe, wurde in der Web-Version und der Web-Konfiguration kommentiert. Ich verwende vs Express 2013 mit lokaler Datenbank.
Vini
18

Für die richtige Lösung nach vielen Stunden:

  1. Öffnen Sie die Konfigurationsdatei
  2. Ändern Sie die Verbindungszeichenfolge wie folgt

<add name="umbracoDbDSN" connectionString="data source=YOUR_SERVER_NAME;database=nrc;Integrated Security=SSPI;persist security info=True;" providerName="System.Data.SqlClient" />

  1. Ändern Sie den YOUR_SERVER_NAME mit Ihrem aktuellen Servernamen und speichern Sie ihn
  2. Öffnen Sie den IIS-Manager
  3. Suchen Sie den Namen des Anwendungspools, den die Website oder Webanwendung verwendet
  4. Klicken Sie mit der rechten Maustaste und wählen Sie Erweiterte Einstellungen
  5. Ändern Sie in den erweiterten Einstellungen unter Prozessmodell das Konto Identität in Benutzerdefiniert und fügen Sie Ihre Serveradministratordetails hinzu. Weitere Informationen finden Sie in den angehängten Abbildungen:

Geben Sie hier die Bildbeschreibung ein

Hoffe das wird helfen.

Ahmed Na.
quelle
2
Diese Lösung hat bei mir funktioniert, aber ich habe mich gefragt, wie sich diese Änderung der Identität auf das Sicherheitsverhalten der Anwendung auswirkt.
CesarB
Alle vom Prozess ausgeführten Aktionen werden mit den Berechtigungen / Berechtigungen dieses Kontos ausgeführt. Erteilen Sie nicht mehr Berechtigungen als erforderlich. Ein dediziertes Dienstkonto wäre ratsam. Ich
duct_tape_coder
12

Für die Verbindung zu einer SQL Server-Datenbank über die Windows-Authentifizierung ist grundsätzlich erforderlich, welchen Server Sie verbinden möchten, wie lautet Ihr Datenbankname, die Informationen zur integrierten Sicherheit und der Anbietername.

Grundsätzlich funktioniert das:

<connectionStrings>      
<add name="MyConnectionString"
         connectionString="data source=ServerName;
   Initial Catalog=DatabaseName;Integrated Security=True;"
         providerName="System.Data.SqlClient" />
</connectionStrings> 

Einstellen Integrierte Sicherheit Feld wahr Mittel im Grunde wollen Sie Datenbank über die Windows - Authentifizierung erreichen, wenn Sie dieses Feld falsche Windows - Authentifizierung wird nicht funktionieren.

Es funktioniert auch anders, je nachdem, welchen Anbieter Sie verwenden.

  • SqlClient sowohl Integrated Security = true; oder IntegratedSecurity = SSPI; funktioniert.

  • OleDb ist Integrated Security = SSPI;

  • Odbc es ist Trusted_Connection = yes;
  • OracleClient ist Integrated Security = yes;

Integrierte Sicherheit = true löst bei Verwendung mit dem OleDb-Anbieter eine Ausnahme aus.

nzrytmn
quelle
6

Das ist kürzer und funktioniert

<connectionStrings>      
<add name="DBConnection"
             connectionString="data source=SERVER\INSTANCE;
       Initial Catalog=MyDB;Integrated Security=SSPI;"
             providerName="System.Data.SqlClient" />
</connectionStrings> 

Persist Security Info nicht erforderlich

Carlos E.
quelle