2012-02-16 10 views
19

Anteriormente para todas nuestras aplicaciones asp.net hemos estado utilizando un usuario sysadmin dentro de SQL Server para conectar y agregar/actualizar/eliminar/obtener datos. Nuestro administrador de SQL desea eliminar esa cuenta y crear una cuenta de dominio para que podamos usar esa cuenta dentro de nuestras aplicaciones .net.Cadena de conexión utilizando un usuario de dominio?

Mi cadena de conexión actual es:

 
name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=user;Password=password" providerName="System.Data.SqlClient" 

¿Cómo sería la cadena de conexión será por usar una cuenta de dominio?

me trataron:

 
name="name" connectionString="Data Source=server;Initial Catalog=database;Persist Security Info=True;User ID=domain\user;Password=password" providerName="System.Data.SqlClient" 

y no funciona.

¿Hay alguna forma diferente de conectarse a SQL Server utilizando una cuenta de dominio?

Gracias por su ayuda.

+1

** ** Nota: No se puede pasar el nombre de usuario y contraseña de Windows en la cadena de conexión para conectarse a SQL Server como se detalla [aquí] (https: // stackoverflow.com/questions/830929/database-windows-authentication-username-password). Tiene que ser un inicio de sesión de usuario de SQL. – RBT

Respuesta

27

Tenga una mirada en connectionstrings.com para todas las variaciones posibles - un recurso muy útil que utilizo todo el tiempo

Específicamente, desea que este formato:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

Esto, por supuesto, sólo funciona si el la cuenta de dominio en cuestión es la que abre la conexión.

No hay una manera fácil de conectarse con credenciales arbitrarias, pero puede impersonate el usuario en cuestión y luego conectarse.

Esto puede ser un poco molesto. Una alternativa si los usuarios están en la red local (o si controla la configuración de su navegador) es usar la autenticación Kerberos en su sitio. Las páginas se mostrarán con los permisos del usuario pertinente; a continuación, puede usar la cadena de conexión anterior e IIS se conectará al Db con las credenciales apropiadas para cada usuario. Esto es particularmente útil desde una perspectiva de seguridad ya que el Db puede auditar por usuario y los permisos pueden ser por usuario/fila/columna en lugar de solo por aplicación.

+0

Gracias por su respuesta. Ahora surgen otras preguntas. Entonces, para usar una cuenta de dominio en Connection String tendría que haber iniciado sesión en Windows/PC usando la cuenta de dominio. ¿Es esa la única forma en que podría funcionar? –

+2

No es con quien USTED ha INGRESADO, sino con quién se está ejecutando el sitio web. Por ejemplo, vaya al grupo de aplicaciones y cambie el usuario allí para que sea (digamos) MyDomain \ MyWeb.Service - luego otorgue permisos para la base de datos a ese usuario. Esta es la forma más sencilla de hacerlo, pero todas las conexiones se realizarán en la base de datos como ese único usuario. Si desea que las conexiones sean específicas a los permisos de cada usuario (por ejemplo, para el cumplimiento de PCI), debe considerar el paso por las credenciales, ya sea al elegir el modelo de autenticación apropiado o al usar el sistema de suplantación – Basic

+0

Awesome. Muchas gracias por su ayuda. –

2
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; 

Lo anterior es una cadena de conexión para la Autenticación de Windows en su instancia de SQL Server.

4

Sí, intente esto:

Data Source=server;Initial Catalog=database;Integrated Security=SSPI; 

Esto especifica que desea usar la autenticación integrada de Windows en el que aún estaban tratando de utilizar la autenticación de SQL Server (a pesar de que el nombre de usuario introducido parecía un dominio de Windows/usuario cuenta de servidor SQL todavía lo trata como autenticación estándar de SQL Server)

también echar un vistazo a connectionstrings.com

+0

Muchas gracias por la respuesta. –

3

uso integrado de seguridad:

Integrated Security=SSPI 

que tiene una variante:

Trusted_Connection=True 

Las diferentes cadenas de conexión (para una variedad de bases de datos) se pueden encontrar en connectionstrings.com.

Con ambos, debe asegurarse de que la aplicación se ejecuta con la cuenta con la que necesita iniciar sesión.

2

Si desea utilizar una cuenta de usuario diferente, entonces el usuario que inició sesión tiene dos opciones.

Opción 1

Usted puede añadir el usuario a la Identidad del grupo de aplicaciones.

Para esto vaya a la configuración avanzada del grupo de aplicaciones y edite la identidad para usar el usuario que desee.

Opción 2

Añadir este en la configuración Web:

<identity impersonate="true" userName="Domain\User" password="Password" /> 

Y utilizar este stirng conexión:

<add name="Name" connectionString="Data source=SqlServer;Initial Catalog=DbName;Integrated security=True" providerName="System.Data.SqlClient"/> 

Para más detalles ver: https://msdn.microsoft.com/en-us/library/134ec8tc.aspx

encuentra también otro buen artículo de su https://www.codeproject.com/tips/520341/implement-impersonation-in-asp-net

Cuestiones relacionadas