Cadena de conexión con autenticación de Windows

133

Estoy creando un sitio web, pero en la base de datos uso la autenticación de Windows.

Sé que usas esto para la autenticación de SQL

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

¿Cómo modifico esto para que funcione con la autenticación de Windows?

MDC
fuente

Respuestas:

192

Reemplace el nombre de usuario y contraseña con Integrated Security=SSPI;

Entonces la cadena de conexión debe ser

<connectionStrings> 
<add name="NorthwindContex" 
   connectionString="data source=localhost;
   initial catalog=northwind;persist security info=True; 
   Integrated Security=SSPI;" 
   providerName="System.Data.SqlClient" /> 
</connectionStrings> 
cabezas5150
fuente
1
Sé que puede configurar un usuario de AD específico para el grupo de aplicaciones (aplicación web). ¿Puedes hacer lo mismo para la aplicación de Windows?
user384080
66
Persist Security Infoprobablemente no sea necesario: stackoverflow.com/a/2010059/1869660
Sphinxxx
@ heads5150: ¿Es posible que no haya cadenas de conexión en mi proyecto? Me estoy perdiendo de algo. He buscado en toda mi solución para encontrar una cadena de conexión como la anterior. No pude encontrar ninguno. El que fundé fue comentado en el lanzamiento web y la configuración web. Estoy usando vs express 2013 con db local.
Vini
19

Para la solución correcta después de muchas horas:

  1. Abra el archivo de configuración.
  2. Cambie la cadena de conexión con lo siguiente

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

  1. Cambie YOUR_SERVER_NAME con su nombre de servidor actual y guarde
  2. Abra el administrador de IIS
  3. Encuentre el nombre del grupo de aplicaciones que usa el sitio web o la aplicación web
  4. Haga clic derecho y elija Configuración avanzada
  5. Desde Configuración avanzada en Modelo de proceso, cambie la identidad a la cuenta personalizada y agregue los detalles de administración del servidor, consulte las imágenes adjuntas:

ingrese la descripción de la imagen aquí

Espero que esto ayude.

Ahmed Na.
fuente
2
Esta solución funcionó para mí, pero me preguntaba cómo afecta este cambio de identidad al comportamiento de la aplicación, en términos de seguridad.
CesarB
Todas las acciones realizadas por el proceso se ejecutarán con los permisos / privilegios de esa cuenta. No otorgue más permisos de los necesarios. Una cuenta de servicio dedicada sería aconsejable. También recomendaría revisar DISA IIS y Windows Server STIG: public.cyber.mil/stigs/downloads
duct_tape_coder
12

Para conectarse a una base de datos del servidor SQL a través de la autenticación de Windows, básicamente necesita a qué servidor desea conectarse, cuál es el nombre de su base de datos, la información de seguridad integrada y el nombre del proveedor.

Básicamente esto funciona:

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

Establecer el campo de Seguridad Integrada verdadero significa básicamente que desea llegar a la base de datos a través de la autenticación de Windows, si configura este campo, la autenticación falsa de Windows no funcionará.

También funciona de manera diferente según el proveedor que esté utilizando.

  • SqlClient tanto Integrated Security = true; o IntegratedSecurity = SSPI; está trabajando.

  • OleDb es Seguridad Integrada = SSPI;

  • Odbc es Trusted_Connection = yes;
  • OracleClient es seguridad integrada = sí;

Seguridad integrada = verdadero produce una excepción cuando se usa con el proveedor OleDb.

nzrytmn
fuente
6

Esto es más corto y funciona

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

No se necesita información de seguridad persistente

Carlos E
fuente