Puis-je me connecter à SQL Server à l'aide de l'authentification Windows à partir de l'application Web Java EE?

StackOverflow https://stackoverflow.com/questions/167464

Question

Je cherche actuellement à établir une connexion à une base de données SQL Server à partir de mon application Web Java EE à l'aide de l'authentification Windows au lieu de l'authentification SQL Server. J'utilise cette application à partir de Tomcat 6.0 et j'utilise le pilote JDBC de Microsoft. 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 j'utilise l'authentification SQL Server.

Puis-je récupérer les informations d'identification de l'authentification Windows de l'utilisateur et utiliser cette authentification pour SQL Server?

MISE À JOUR : je sais qu'en ASP.net, il existe un moyen de configurer l'authentification Windows pour l'accès à l'application Web, ce qui correspond exactement à ce que je recherche, sauf que je souhaite transmettre ce jeton. à SQL Server pour accéder à la base de données.

Était-ce utile?

La solution

Je ne pense pas que l'on puisse transférer les informations d'identification de l'utilisateur du navigateur vers la base de données (et est-ce que cela a du 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 la DLL appropriée 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

Autres conseils

regardez

http://jtds.sourceforge.net/faq.html#driverImplementation

Quel est le format d'URL utilisé par jTDS?

Le format de l'URL pour jTDS est le suivant:

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) au lieu de l'authentification SQL Server habituelle (c'est-à-dire que l'utilisateur et le mot de passe fournis sont l'utilisateur de domaine et le mot de passe). 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 enregistré (pour que cela fonctionne, il est évident que Windows doit être connecté. , connecté à un domaine et que la bibliothèque SSO soit é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 l'authentification unique fonctionne, jTDS doit pouvoir charger la bibliothèque SPPI native ntlmauth.dll . Placez cette DLL n'importe où dans le chemin système (défini par la variable système PATH ) et vous êtes tous définis.

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 le nom de ma 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 de laisser tomber le pilote JDBC MS.

Utilisez plutôt le pilote jtds jtds . Lisez le fichier README.SSO de la distribution Jtds pour savoir comment configurer l’authentification unique (authentification native) et pour placer la DLL native afin de vous assurer qu’elle peut être chargée par la machine virtuelle.

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:

  1. Installer le pilote JTDS
  2. N'utilisez pas le " domaine = " propriété dans la chaîne jdbc: jtds :: // [:] [/] [; = [; ...]]
  3. Installez ntlmauth.dll dans le répertoire c: \ windows \ system32 (l'enregistrement de la dll n'était pas nécessaire) sur le serveur Web.
  4. Modifiez l'identité de connexion du service Apache Tomcat en un utilisateur du domaine ayant accès au serveur de base de données SQL (il n'était pas nécessaire que l'utilisateur ait accès au dbo.master).

Mon environnement: Clinet Windows XP hébergeant Apache Tomcat 6 avec backend MS SQL 2005 sous Windows 2003

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top