現在、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に渡したいです。
ユーザー資格情報をブラウザからデータベースにプッシュできるとは思わない(それは理にかなっているのだろうか?)
ただし、Tomcatを実行しているユーザーの資格情報を使用してSQL Serverに接続する場合は、MicrosoftのJDBCドライバーを使用できます。次のようにJDBC URLを作成するだけです。
jdbc:sqlserver://localhost;integratedSecurity=true;
そして適切なDLLをTomcatのbinディレクトリにコピーします(ドライバーに付属のsqljdbc_auth.dll)
見る
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を参照してください)。
これは実際に私のために働く:
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
本当に説得力のある理由がない限り、MS JDBCドライバーを捨てることをお勧めします。
代わりに、 jtds jdbc driver を使用してください。 jtdsディストリビューションのREADME.SSOファイルを読んで、シングルサインオン(ネイティブ認証)の設定方法と、ネイティブDLLをJVMによってロードできることを確認するために置く場所を指定してください。
Windows認証を使用してMS SQL 2005に接続すると問題が発生しました。このフォーラムや他のフォーラムの助けを借りて問題を解決することができました。ここに私がやったことがあります:
私の環境:Windows XP Windows 2003上のMS SQL 2005バックエンドでApache Tomcat 6をホストするclinet