2012-06-27 11 views
15

¿Es posible conectarse a SQL Server usando la autenticación de Windows/seguridad integrada de una Mac? Estoy usando el controlador tipo 4 JDBC provisto por Microsoft. La interfaz (una aplicación de formulario) está codificada en Java. Todo funciona perfectamente en Windows, pero una persona en la oficina usa una Mac.Autenticación de Windows para SQL Server utilizando JBDC en una Mac

¿Esto es posible? FYI, nunca he usado Macs así que soy muy novato con ellos. He buscado en Internet pero no he encontrado una solución. Gracias de antemano.

Respuesta

4

Using Kerberos Integrated Authentication to Connect to SQL Server

A partir de Microsoft controlador JDBC 4.0 para SQL Server, una aplicación puede utilizar la propiedad conexión AuthenticationScheme para indicar que que quiere conectarse a una base de datos utilizando el tipo 4 Kerberos integrado autenticación .


El controlador JDBC jTDS para SQL Server es compatible con la autenticación de Windows simple uso de la propiedaddominio como se describe en el FAQ.

dominio

Especifica el dominio de Windows para autenticar. Si se proporcionan nombre actual y el usuario y contraseña, jTDS utiliza de Windows (NTLM) autenticación en lugar de la autenticación de SQL habitual del servidor (es decir, el usuario y la contraseña proporcionados son el usuario del dominio y la contraseña). Este permite que clientes que no sean de Windows inicien sesión en servidores que solo tienen configurados para aceptar la autenticación de Windows.

Si el parámetro de dominio está presente, pero se proporciona ningún nombre de usuario y contraseña, jTDS utiliza su nativa biblioteca y troncos-El inicio de sesión único en con las credenciales del usuario de Windows conectado (para que esto funcione uno obviamente tendrá que estar en Windows, iniciar sesión en un dominio, y también tener la biblioteca SSO instalada - consultar README.SSO en la distribución en cómo hacerlo).

20

Esta información es difícil de conseguir en mi experiencia. Todas mis búsquedas arrojaron información incorrecta (obsoleta) desde que Microsoft cambió las reglas y agregó el parámetro authenticationScheme. Con el fin de ayudar a la persona siguiente, aquí es un ejemplo de una cadena de conexión que funciona:

jdbc:jtds:sqlserver://123.123.123;instance=server1;databaseName=students;integratedSecurity=true;authenticationScheme=JavaKerberos 

También en las propiedades del controlador establece "Domain". No incluya el dominio en ninguna configuración de nombre de usuario.

Esto se probó usando Squirrel SQL (Java) con jtds en Mac OSX. Afortunadamente, la oración anterior tiene los términos de búsqueda que alguien podría usar y que necesitan conocer esta información.

+0

Este fue el único lugar que encontré la información correcta. –

+0

Cliente: Grails/Groovy 2.0.4, controlador jtds MacOSX (en eclipse). Servidor: MSSQL 2008, usando la autenticación de Windows. –

+1

Vale la pena decir que necesita descargar el controlador jTDS (http://jtds.sourceforge.net/index.html), parece ser el único con integración de Kerberos. Sé que está en la cadena de conexión, pero algunas personas podrían perderlo y no pueden conectarse con otros controladores. – lotif

2

Uso jTDS en un mac (10.9).

Al usar este controlador, debe especificar el nombre de usuario y la contraseña como siempre, la única diferencia es que debe especificar domain = WHATEVERTHENTDOMAIN en la cadena de conexión (o propiedades de conexión si prefiere).

Así que una cadena de conexión de la muestra es:

jdbc:jtds:sqlserver://db_server:1433/DB_NAME;domain=NT_DOMAIN_NAME 

El conductor jTDS continuación, utiliza NTLM para iniciar sesión en el dominio especificado con el nombre de usuario y contraseña.

0

Esta es una publicación anterior pero puede ser relevante para algunas personas. Vea este otro SO post que describe cómo conectarse a un Servidor SQL con Autenticación de Windows desde una máquina Linux a través de JDBC. Esto funcionará en mac también.

0

jTDS es inferior al controlador JDBC de Microsoft (en particular, no se puede averiguar los tipos de parámetros en una declaración preparada)

Sí, puede autenticar a MS SQL Server mediante la autenticación de Active Directory, como Active Directory es Sólo Kerberos + LDAP, que son de código abierto y puesto en práctica en Mac

Kerberos config /etc/krb5.conf:

[libdefaults] 
default_realm = YOUR_REALM.NET 

[realms] 
YOUR_REALM.NET = { 
    kdc = host.your-domain.net 
} 

que necesitaba usar el nombre de dominio completo del KDC, no sólo el nombre de dominio

JDBC Cadena de conexión:

jdbc:sqlserver://$host;database=$db;integratedSecurity=true;authenticationScheme=JavaKerberos 

Si $host no tiene un SPN de MSSQLSrv/$host, añadir serverSp=$SPN a la cadena de conexión JDBC

Cuestiones relacionadas