web-dev-qa-db-ja.com

Java EE webappからWindows認証を使用してSQL Serverに接続できますか?

現在、Java SQL Server認証の代わりにWindows認証を使用するEE WebアプリケーションからSQL Serverデータベースに接続する方法を調査しています。Tomcat6.0からこのアプリを実行しています。 Microsoft JDBCドライバーを使用して、接続プロパティファイルは次のようになります。

dbDriver              = com.Microsoft.sqlserver.jdbc.SQLServerDriver
dbUser                = user
dbPass                = password
dbServer              = localhost:1433;databaseName=testDb
dbUrl                 = jdbc:sqlserver://localhost:1433

SQL Server認証を使用している場合、この方法でSQL Serverデータベースに接続しても問題はありません。

ユーザーのWindows認証の資格情報を取得し、SQL Serverでthat認証を使用する方法はありますか?

[〜#〜] update [〜#〜]:ASP.netには、webappにアクセスするためのWindows認証を設定する方法があることを知っています。データベースにアクセスするために、そのトークンをSQL Serverに渡したいです。

53
karlgrz

ユーザー資格情報をブラウザからデータベースにプッシュできるとは思わない(それは理にかなっているのだろうか?)

ただし、Tomcatを実行しているユーザーの資格情報を使用してSQL Serverに接続する場合は、MicrosoftのJDBCドライバーを使用できます。次のようにJDBC URLを作成するだけです。

jdbc:sqlserver://localhost;integratedSecurity=true;

そして適切なDLLをTomcatのbinディレクトリにコピーします(ドライバーに付属のsqljdbc_auth.dll)

MSDN> JDBCドライバーを使用したSQL Serverへの接続>接続URLの構築

76
Jerome Delattre

見る

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

JTDSで使用されるURL形式は何ですか?

JTDSのURL形式は次のとおりです。

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

... domain認証するWindowsドメインを指定します。存在し、ユーザー名とパスワードが提供される場合、jTDSは通常のSQL Server認証の代わりにWindows(NTLM)認証を使用します(つまり、提供されるユーザーとパスワードはドメインユーザーとパスワードです) )。これにより、Windows以外のクライアントは、Windows認証のみを受け入れるように構成されているサーバーにログインできます。

ドメインパラメータは存在するが、ユーザー名とパスワードが指定されていない場合、jTDSはネイティブのシングルサインオンライブラリを使用して、ログに記録されたWindowsユーザーの資格情報でログインします(これを機能させるには、明らかにWindowsでログインする必要がありますドメイン、およびSSOライブラリもインストールされている-これを行う方法については、ディストリビューションのREADME.SSOを参照してください)。

25
opensas

これは実際に私のために働く:

Jtdsdディストリビューションに付属のREADME.SSOごと:

シングルサインオンが機能するには、jTDSがネイティブSPPIライブラリをロードできる必要がありますntlmauth.dll。これをシステムパスの任意の場所(PATHシステム変数で定義)にDLL)を配置すると、設定は完了です。

Jre/binフォルダーに配置しました

インスタンス名の必要性を軽減するために、SQLサーバーインスタンス(2302)専用のポートを構成しました。 lportalは私のデータベース名です。

jdbc.default.url=jdbc:jtds:sqlserver://192.168.0.147:2302/lportal;useNTLMv2=true;domain=mydomain.local
7
Andy

本当に説得力のある理由がない限り、MS JDBCドライバーを捨てることをお勧めします。

代わりに、 jtds jdbc driver を使用してください。 jtdsディストリビューションのREADME.SSOファイルを読んで、シングルサインオン(ネイティブ認証)の設定方法と、ネイティブDLLをJVMによってロードできることを確認するために置く場所を指定してください。

5
Kevin Day

Windows認証を使用してMS SQL 2005に接続すると問題が発生しました。このフォーラムや他のフォーラムの助けを借りて問題を解決することができました。ここに私がやったことがあります:

  1. JTDSドライバーをインストールする
  2. Jdbc:jtds :: // [:] [/] [; = [; ...]]文字列で「domain =」プロパティを使用しないでください
  3. Ntlmauth.dllをWebサーバーマシンのc:\ windows\system32ディレクトリにインストールします(dllの登録は不要です)。
  4. Apache TomcatサービスのログオンIDを、SQLデータベースサーバーにアクセスできるドメインユーザーに変更します(ユーザーがdbo.masterにアクセスする必要はありませんでした)。

私の環境:Windows XP Windows 2003上のMS SQL 2005バックエンドでApache Tomcat 6をホストするclinet

3
nathan