web-dev-qa-db-ja.com

JDBCを介してLinuxマシンからWindows認証を使用してSQL Serverに接続する

JdbcおよびWindows認証を使用してSQL Serverに接続できるようにしたい。インターネット上で、接続文字列に次のプロパティを追加する必要があるという回答がありました。

integratedSecurity=true;

また、追加します

sqljdbc_auth.dll

Javaパス。

しかし、これは、私が理解している限り、Windowsマシンから接続している場合にのみ適用されます。 Linuxマシンでこれを試すと、次のようになります。

Java.sql.SQLException: This driver is not configured for integrated authentication

私の質問は、Linuxマシンからどのように行うかです。

ありがとう

15
zuckermanori

結局、私は自分の質問に答えます。MicrosoftJDBCドライバーを使用してLinuxマシンからWindows認証を使用することはできません。これは、次の接続文字列を使用するjTDS JDBCドライバーを使用して可能です。

jdbc:jtds:sqlserver://Host:port;databaseName=dbname;domain=domainName;useNTLMv2=true;

すべてのコメントをありがとう

33
zuckermanori

TL; DR

Linuxで実行されているJVMからMSSQLへのJDBC接続にネイティブWindows認証を使用することはできません。


このMSDNの記事では、Linux上のJDBCを使用した認証方法、潜在的なエラー、および利用可能なオプションについて説明しています。

https://blogs.msdn.Microsoft.com/psssql/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication/

... JDBC 4.0ドライバーでは、authenticationScheme接続プロパティを使用して、Kerberosを使用してSQLに接続する方法を指定できます。ここには2つの設定があります。

  • NativeAuthentication(デフォルト)– sqljdbc_auth.dllを使用し、Windowsプラットフォームに固有です。これは、JDBC 4.0ドライバーより前の唯一のオプションでした。

  • JavaKerberos – Java AP​​Iを使用してKerberosを呼び出し、Windowsプラットフォームに依存しません。これはJava固有であり、基盤となるオペレーティングシステムにバインドされていないため、WindowsプラットフォームとLinuxプラットフォームの両方で使用できます。

...

次のドキュメントでは、JDBCドライバでKerberosを使用する方法の概要を説明し、JavaKerberosを適切に機能させるために必要なことを順を追って説明します。

Kerberos統合認証を使用してSQL Serverに接続する http://msdn.Microsoft.com/en-us/library/gg558122%28v=sql.110%29.aspx

5
mjn

これは古いトピックのようなものですが、Googleがここに人を送る場合に備えて:

SQL Server用の2つの主要なJDBCドライバーがあります。 1つはMicrosoftから、もう1つはjTDSからです。ここで説明するように、jTDSは、Linuxを含む他のプラットフォームからWindows auth(NTLM)を使用して接続できます: http://jtds.sourceforge.net/faq.html#windowsAuth 。もちろん、SQL認証のログインも使用できます。 SQL認証のログインは、どのOSからも他のどのログインよりも使いにくいので、オプションであることを忘れないでください。

Microsoftが提供するバージョンは、@ mjnがドキュメントから引用を提供したバージョンです。 integratedSecurity=trueauthenticationScheme=javaKerberos、およびauthentication=NotSpecifiedを指定することにより、Windows認証を使用して接続できます。

より多くの混乱を見つけるために邪魔にならない場合でも、これを機能させるのは難しいので、使用しているドライバーを常に覚えておいてください-そして、より具体的な助けを得ることができるようにこれらの投稿で教えてください。

DBeaverを使用している場合、SQL Serverデータベースに接続する方法は次のとおりです。

DBeaverを使用してLinux DebianからSQL Serverに接続するには

1.- SQL Server jTDSドライバーの選択

enter image description here

2.-接続情報を入力します

enter image description here

3.- [ドライバーのプロパティ]タブに移動し、ドメイン、ユーザー、パスワードを追加します

enter image description here

enter image description here

ちょうどメモとして、いくつかの投稿で、USENTLMV2プロパティをTRUEに変更する必要があることがわかりましたが、USERTLNMV2をtrueまたはfalseにすることで機能しました。

私が見つけた問題は、ユーザーとパスワードを使用してデータベースに接続しようとすると、次のエラーがスローされることでした:

ログインに失敗しました。ログインは信頼できないドメインからのものであり、Windows認証では使用できません。

enter image description here

このエラーは、ユーザーの有効期限が近づいたためにスローされました。別のADユーザーで試してみましたが、接続できました。

1
mavi