統合認証でSQL Serverに接続するサンプル
次のお仕事ではSQLServerを使うんですが、これのユーザー認証では「統合認証」とかいうのがサポートされていて、ユーザー名/パスワードの指定なしで認証ができるらしい。具体的には「ASP.NETアプリケーションのワーカープロセスを動作させているWindowsユーザーアカウントを利用して認証を行なう」とのこと。
→MOJAO TECH - 【SQL Server】Windows統合認証とSQL Server認証
ということで、以下は、統合認証でSQLServerに接続してみるサンプルです。
String sqlServer = "<データベースサーバー>"; String dbName = "データベース"; Connection conn = null; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // ドライバクラスをロード String connectionUrl = new StringBuilder("jdbc:sqlserver://") .append( sqlServer ).append( ";" ) .append( "databaseName=" ).append( dbName ) .append( ";integratedSecurity=true;" ).toString(); // 「integratedSecurity」を「true」にする。 conn = DriverManager.getConnection(connectionUrl); conn.setAutoCommit(false); // ... } catch ( SQLException e ) { e.printStackTrace(); // TODO } catch ( ClassNotFoundException e ) { e.printStackTrace(); // TODO } finally { if ( conn != null ) { try { conn.close(); } catch ( SQLException e ) { e.printStackTrace();// TODO } } }
以下の2つがポイントかな。
- 「integratedSecurity」を「true」にする。
- 必要なライブラリを「java.library.path」に追加する。(※環境により使用するライブラリが違うみたいなので注意。)
-Djava.library.path=<JDBCのインストール先>\sqljdbc_1.2\jpn\auth\x86
あと、統合認証はWindows環境限定とのこと。ふむ。SQLサーバーとクライアントが同一ドメインにある必要があるとかそうゆう制限もありそうだな。いや、ドメインとか全然意味わかんないんだけど!大丈夫かな。