source net ejemplo data conexion cadena sql-server security sqlconnection

sql-server - net - connection string sql server windows authentication



SQL Server devuelve el error "Error de inicio de sesiĆ³n para el usuario ''NT AUTHORITY / ANONYMOUS LOGON''." En la aplicaciĆ³n de Windows (5)

Una aplicación que ha estado funcionando sin problemas (y no ha tenido ningún desarrollo activo en alrededor de 6 meses) recientemente comenzó a fallar en conectarse a la base de datos. Los administradores de operaciones no pueden decir qué podría haber cambiado que causaría el problema.

La aplicación cliente utiliza una cadena de conexión codificada con Seguridad integrada = Verdadero, pero cuando las aplicaciones intentan crear una conexión a la base de datos, arroja una SQLException que dice "Error de inicio de sesión para el usuario ''NT AUTHORITY / ANONYMOUS LOGON".

Puedo iniciar sesión en la base de datos a través de Management Studio en esta cuenta sin problemas. Todas las cosas que he visto para este problema son para proyectos de ASP.NET y aparentemente es el "Problema de doble salto", que al ser una aplicación cliente mejor no ser un problema. Cualquier ayuda sería muy apreciada.

Editar

La máquina cliente y la máquina servidor, así como las cuentas de usuario, están en el mismo dominio. Esto ocurre cuando Windows Firewall está apagado.

La teoría principal es: el servidor se reinició hace aproximadamente una semana y no pudo registrar el nombre principal del servicio (SPN). Si no se registra un SPN, es posible que la autenticación integrada retroceda a NTLM en lugar de a Kerberos.


Creo que debe haber habido algún cambio en el grupo de AD utilizado para autenticarse en la base de datos. Agregue el nombre del servidor web, en el formato dominio / nombre de servidor web $, al grupo de AD que tuvo acceso a la base de datos. Además, también intente configurar el atributo web.config en "falso". Espero eso ayude.

EDITAR : siguiendo lo que ha editado ... lo más probable es que indique que el protocolo de autenticación de su SQL Server se ha reducido desde Kerberos (por defecto, si estaba usando la autenticación integrada de Windows) a NTLM. Para usar el servicio principal de Kerberos, el nombre (SPN) debe estar registrado en el servicio de directorio de Active Directory. Service Principal Name (SPN) son identificadores únicos para servicios que se ejecutan en servidores. Cada servicio que utilizará la autenticación Kerberos necesita tener un SPN configurado para que los clientes puedan identificar el servicio en la red. Está registrado en Active Directory bajo una cuenta de computadora o una cuenta de usuario. Aunque el protocolo Kerberos es el predeterminado, si el valor predeterminado falla, se intentará con NTLM.

En su escenario, el cliente debe estar haciendo una conexión TCP, y probablemente se está ejecutando bajo la cuenta LocalSystem, y no hay un SPN registrado para la instancia SQL, por lo tanto, se usa NTLM, sin embargo, la cuenta LocalSystem hereda del contexto del sistema en lugar de un usuario real basado en el contexto, por lo tanto, falló como ''INICIO DE SESIÓN ANÓNIMO''.

Para resolver esto, solicite al administrador de su dominio que registre SPN manualmente si su SQL Server se ejecuta bajo una cuenta de usuario de dominio. Los siguientes enlaces pueden ayudarlo más:
http://blogs.msdn.com/b/sql_protocols/archive/2005/10/12/479871.aspx
http://support.microsoft.com/kb/909801


Probablemente solo necesite proporcionar un nombre de usuario y una contraseña en su conexión y establecer Seguridad integrada = falso


Si su problema es con los servidores vinculados, necesita ver algunas cosas.

En primer lugar, sus usuarios deben tener habilitada la delegación y, si lo único que ha cambiado, es probable que lo hagan. De lo contrario, puede desmarcar la casilla de verificación "La cuenta es confidencial y no se puede delegar" en las propiedades del usuario en AD.

Segundo, sus cuentas de servicio deben ser confiables para la delegación. Dado que cambió recientemente su cuenta de servicio, sospecho que este es el culpable. ( http://technet.microsoft.com/en-us/library/cc739474(v=ws.10).aspx )

Mencionó que podría tener algunos problemas de SPN, por lo tanto, asegúrese de configurar el SPN para ambos puntos finales; de lo contrario, no podrá ver la pestaña de delegación en AD. También asegúrese de estar en una vista avanzada en "Usuarios y equipos de Active Directory".

Si aún no ve la pestaña de delegación, incluso después de corregir su SPN, asegúrese de que su dominio no esté en modo 2000. Si es así, puede "elevar el nivel de función de dominio".

En este punto, ahora puede marcar la cuenta como confiable para la delegación:

En el panel de detalles, haga clic con el botón derecho en el usuario que desea que sea de confianza para la delegación y haga clic en Propiedades.

Haga clic en la pestaña Delegación, seleccione la casilla de verificación Cuenta para la delegación de confianza y luego haga clic en Aceptar.

Finalmente, también deberá configurar todas las máquinas como confiables para la delegación.

Una vez que hayas hecho esto, reconéctate a tu servidor sql y prueba tus servidores favoritos. Deberían funcionar


Uno de mis trabajos de SQL tenía el mismo problema. Implicaba la actualización de datos de un servidor a otro. El error ocurrió porque estaba usando la cuenta de servicio de SQL Server Server. Creé una Credencial usando un UserId (que usa la autenticación de Windows) común a todos los servidores. Luego creó un Proxy usando esta credencial. Usé el proxy en el trabajo del servidor SQL y funciona correctamente.


En primer lugar, mi problema no es exactamente el mismo que el tuyo, pero esta publicación es lo primero que aparece en Google para el error de Login failed for user ''NT AUTHORITY/ANONYMOUS LOGON'' en el error Login failed for user ''NT AUTHORITY/ANONYMOUS LOGON'' cuando escribí esto. La solución puede ser útil para las personas que buscan este error, ya que no encontré esta solución específica en ningún lugar en línea.

En mi caso, utilicé Xampp / Apache y PHP sqlsrv para intentar conectarme a una base de datos MSSQL utilizando la Autenticación de Windows y recibí el error de Login failed for user ''NT AUTHORITY/ANONYMOUS LOGON'' usted describió. Finalmente encontré que el problema es que el servicio Apache se ejecuta bajo el usuario "SERVICIO LOCAL" en lugar de la cuenta de usuario con la que inicié sesión. En otras palabras, literalmente estaba usando una cuenta anónima. La solución fue ingresar a services.msc, hacer clic con el botón derecho en el servicio Apache, ir a Propiedades, ir a la pestaña Iniciar sesión e ingresar las credenciales para el usuario. Esto está en línea con su problema relacionado con SPN ya que sus SPN están configurados para ejecutarse desde un usuario específico en el dominio. Por lo tanto, si el SPN correcto no se está ejecutando, la autenticación de Windows se configurará por defecto para el usuario incorrecto (probablemente el usuario del "SERVICIO LOCAL") y le dará el error anónimo.

Aquí es donde es diferente de tu problema. Ninguna de las computadoras en la red local está en un dominio, solo están en un grupo de trabajo. Para usar la Autenticación de Windows con un Grupo de Trabajo, tanto la computadora con el servidor (en mi caso MSSQL Server) como la computadora con el servicio que solicita datos (en mi caso Apache) necesitaban tener un usuario con un nombre idéntico y una contraseña idéntica.

En resumen, Error de Login failed for user ''NT AUTHORITY/ANONYMOUS LOGON'' en ambos casos parece ser causado por un servicio que no se ejecuta y / o no en el usuario correcto. Asegurarse de que el SPN correcto u otro Servicio se esté ejecutando y bajo el usuario correcto debería resolver la parte anónima del problema.