Je cherche actuellement à établir une connexion à une base de données SQL Server à partir de mon application Web Java EE utilisant l'authentification Windows au lieu de l'authentification SQL Server. J'exécute cette application à partir de Tomcat 6.0, utilisant le pilote Microsoft JDBC. Mon fichier de propriétés de connexion se présente comme suit:
dbDriver = com.Microsoft.sqlserver.jdbc.SQLServerDriver
dbUser = user
dbPass = password
dbServer = localhost:1433;databaseName=testDb
dbUrl = jdbc:sqlserver://localhost:1433
Je n'ai aucun problème avec la connexion à une base de données SQL Server de cette manière lorsque vous utilisez l'authentification SQL Server.
Existe-t-il un moyen de récupérer les informations d'identification de l'authentification Windows de l'utilisateur et d'utiliser that l'authentification pour SQL Server?
UPDATE : Je sais qu’en ASP.net, il existe un moyen de configurer l’authentification Windows pour accéder à la webapp, ce qui est exactement ce que je recherche, sauf Je souhaite transmettre ce jeton à SQL Server pour accéder à la base de données.
Je ne pense pas que l'on puisse pousser les informations d'identification de l'utilisateur du navigateur vers la base de données (et cela a-t-il un sens? Je pense que non)
Mais si vous souhaitez utiliser les informations d'identification de l'utilisateur exécutant Tomcat pour vous connecter à SQL Server, vous pouvez utiliser le pilote JDBC de Microsoft. Construisez simplement votre URL JDBC comme ceci:
jdbc:sqlserver://localhost;integratedSecurity=true;
Et copiez le fichier approprié DLL dans le répertoire bin de Tomcat (sqljdbc_auth.dll fourni avec le pilote)
MSDN> Connexion à SQL Server avec le pilote JDBC> Construction de l'URL de connexion
regarder
http://jtds.sourceforge.net/faq.html#driverImplementation
Quel est le format d'URL utilisé par jTDS?
Le format de l'URL pour jTDS est:
jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
... domaine Spécifie le domaine Windows à authentifier. S'il est présent et que le nom d'utilisateur et le mot de passe sont fournis, jTDS utilise l'authentification Windows (NTLM) à la place de l'authentification SQL Server habituelle (l'utilisateur et le mot de passe fournis sont l'utilisateur et le mot de passe du domaine). ) Cela permet aux clients non-Windows de se connecter à des serveurs uniquement configurés pour accepter l'authentification Windows.
Si le paramètre domain est présent mais qu'aucun nom d'utilisateur et mot de passe ne sont fournis, jTDS utilise sa bibliothèque native Single Sign-On et se connecte avec les informations d'identification de l'utilisateur Windows connecté (pour que cela fonctionne, il faut évidemment que Windows soit connecté et connecté). la bibliothèque SSO est également installée - consultez README.SSO dans la distribution pour savoir comment procéder).
Cela fonctionne réellement pour moi:
Selon le fichier README.SSO fourni avec la distribution jtdsd:
Pour que Single Sign On fonctionne, jTDS doit pouvoir charger la bibliothèque SPPI native ntlmauth.dll
. Placez ceci DLL n'importe où dans le chemin système (défini par la variable système PATH
, système)), et vous êtes tous ensemble.
Je l'ai placé dans mon dossier jre/bin
J'ai configuré un port dédié à l'instance de serveur SQL (2302) afin de réduire le besoin d'un nom d'instance - c'est simplement quelque chose que je fais. Portail est mon nom de base de données.
jdbc.default.url=jdbc:jtds:sqlserver://192.168.0.147:2302/lportal;useNTLMv2=true;domain=mydomain.local
À moins que vous n'ayez une raison impérieuse de ne pas le faire, je suggère d'abandonner le pilote JDBC MS.
Au lieu de cela, utilisez le pilote jtds jdbc . Lisez le fichier README.SSO de la distribution de jtds pour savoir comment configurer l'authentification unique (authentification native) et pour placer le fichier natif DLL) afin de garantir son chargement par la JVM.
J'avais un problème avec la connexion à MS SQL 2005 à l'aide de l'authentification Windows. J'ai pu résoudre le problème avec l'aide de ce forum et d'autres. Voici ce que j'ai fait:
Mon environnement: Windows XP Clinet hébergeant Apache Tomcat 6 avec backend MS SQL 2005 sous Windows 2003