データベース接続を作成するときに、ハッシュ化または暗号化されたパスワードを送信する必要があります。以下の詳細を参照してください。
DB2 AS400 データベースに接続する Spring アプリケーションがあります。現在、構成ファイル (.properties) を使用して接続の詳細を保存しています。Spring はコンテキスト作成フェーズでこれらのファイルを読み取り、それに応じてデータソースを作成します。
...
database.driverClassName=com.ibm.as400.access.AS400JDBCDriver
database.url=jdbc:as400:<host>:naming=sql;libraries=*LIBL,...;transaction isolation=none
database.username=<user>
database.password=<password>
database.initialPoolSize=2
database.maxPoolSize=5
...
この .properties ファイルは、アプリケーション/Web サーバーのファイル システムに存在します。
パスワードを直接保存するのではなく、ハッシュ化されたパスワードを保存する必要があります。そのため、誰かがファイルの内容を見ても、実際のパスワードが何であるかを知ることができません。
SHA を使用して次のようにします。
...
database.password=5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
...
送信されるパスワードがハッシュされていることを AS400 に伝える方法が必要です。
私の調査では、AS400 は、DES または SHA ハッシュ アルゴリズムを使用できるライブラリ QSYS 内のインデックス QSYUPTBL を使用してパスワードを保存することがわかりました。したがって、受信したパスワードを暗号化し、結果のハッシュをインデックスに保存されているものと比較します。しかし、パスワードがハッシュされていることを期待して直接比較するようにDBの認証プロセスに指示することは可能ですか?
新しい発見:
IBM のドキュメントには、リモート認証方法を設定するための RMTAUTMTH という 1 つのキーワードが記載されています。そのパラメーターで *ENCRYPTED 値を使用すると、ユーザー ID とパスワードの暗号化が有効になります。
...ユーザー ID と関連する暗号化されたパスワードは、DDM 接続要求で送信されます。この認証方法を使用するには、両方のシステムで暗号化サポートを使用できる必要があります... http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/cl/chgrdbdire.htmから抽出
そのため、AS400 側で構成できるようですが、使用されている暗号化アルゴリズムと、jdbc ドライバーがそれをサポートしているかどうかについては何も言及されていません。