Hé, je ne parviens pas à me connecter à un serveur SQL avec du code Java exécuté sous Linux.
Si je définis integratedSecurity=true
, le code Java échoue avec l'erreur suivante:
WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in Java.library.path
com.Microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:b030b480-453d-4007-8151-a552150f74cd
ce qui est logique car il n'y aura pas de fichier sqljdbc.dll
sous Linux.
Mais si je définis integratedSecurity=false
, alors j'obtiens l'erreur suivante:
com.Microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'IT_DEV_USER'.
Alors, est-ce que quelqu'un sait comment je peux me connecter à SQL Server avec integratedSecurity
défini sur false? (Notez que je ne peux même pas me connecter lorsque le code Java est exécuté sur Windows lorsque integratedSecurity
est défini sur false.)
Sinon, y a-t-il un moyen que je puisse faire fonctionner integratedSecurity
sous Linux?
Si vous souhaitez utiliser la sécurité intégrée et utiliser le pilote JDBC version 4.0 ou ultérieure, vous devez ajouter les éléments suivants dans votre chaîne de connexion jdbc.
integratedSecurity=true;authenticationScheme=JavaKerberos
Plus d'informations: http://blogs.msdn.com/b/psssql/archive/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication.aspx
Ajouter authenticationScheme=JavaKerberos
fonctionne pour moi sous Linux, mais veillez à supprimer integratedSecurity=true
car vous n'utilisez pas Windows.
Si vous ne souhaitez pas que la connexion Integrated Security soit établie, définissez ce paramètre sur false et indiquez plutôt l'utilisateur et le mot de passe dans connURL, comme indiqué ci-dessous:
String connectionUrl = "jdbc:sqlserver://localhost:port;databaseName=DB_NAME;integratedSecurity=false;user=login_user;password=login_pwd;";