55

現在、SQL Server 認証の代わりに Windows 認証を使用して Java EE Web アプリケーションから SQL Server データベースに接続する方法を調査しています。Tomcat 6.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 に使用する方法はありますか?

更新: ASP.net には、webapp にアクセスするための Windows 認証をセットアップする方法があることを知っています。

4

5 に答える 5

77

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

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

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

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

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

于 2008-12-10T15:23:02.570 に答える
26

見る

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 認証のみを受け入れるように構成されているサーバーにログインできます。

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

于 2009-04-29T06:29:11.380 に答える
7

これは実際に私にとってはうまくいきます:

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

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

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

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

jdbc.default.url=jdbc:jtds:sqlserver://192.168.0.147:2302/lportal;useNTLMv2=true;domain=mydomain.local
于 2012-01-12T14:42:43.030 に答える
5

やむを得ない理由がない限り、MS JDBC ドライバーを捨てることをお勧めします。

代わりに、jtds jdbc ドライバーを使用してください。シングル サインオン (ネイティブ認証) を構成する方法と、ネイティブ DLL を配置して JVM がロードできるようにする場所については、jtds ディストリビューションの README.SSO ファイルを参照してください。

于 2008-10-04T21:42:02.770 に答える
3

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

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

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

于 2009-12-17T01:03:59.077 に答える