2011-12-20 9 views
2

JNDIでcom.ibm.as400.access.AS400JDBCDataSourceを使用してJDBC接続を作成しようとしています。 私は、InitialContextが設定されているときにデータソースのインスタンスが作成されていることに気づきます。私のコードからリファレンスを取得すると、AS400オブジェクトのコピー(URL、ユーザー名、および接続設定を含む)で別のインスタンスが作成されます。JNDIでcom.ibm.as400.access.AS400JDBCDataSourceを使用しているときにパスワードが設定されていません

as400Ds.setPassword("MYPWD"); 

問題を呼び出す最初のインスタンスIMに

はAS400インスタンスがパスワードを紛失された共有されている場合であるので、私は

Password is not set 
+1

あなたは as400ds.setSavePasswordWhenSerialized(真)を呼び出した場合ことが判明しました。 最初のインスタンスで作成されたパスワードは共有されています。 まだ、私にとっては、これは予想される動作ではありません。他のJDBCドライバでは、AFAIKに似た何かを行う必要はありません。 これの背後にある理由を説明するのに気をつけてください。 このメソッドを呼び出すときにセキュリティ上の脆弱性が存在する可能性がありますか?または同等のものを必要としないjdbcドライバの残りの部分と一緒に使用できますか?説明のために – jambriz

答えて

1

setSavePasswordWhenSerializedます。public void(ブールSAVEPASSWORD)このデータ・ソース・オブジェクトがシリアライズされたときの特性の残りの部分とパスワードをローカルに保存するかどうか

を設定します。パスワードが保管されると、IBM iシステムに接続するために必要なすべての情報が含まれているため、オブジェクトの直列化された形式を保護するのはアプリケーション次第です。デフォルトはfalseです。パスワードを他のプロパティと一緒に保存することはセキュリティ上のリスクであるため、デフォルトでパスワードは保存されません。アプリケーションプログラマがこのリスクを受け入れることを選択した場合は、このプロパティをtrueに設定して、データソースオブジェクトのシリアル化時にツールボックスにパスワードを他のプロパティとともに保存させます。

IBM docs

+0

ありがとう。何らかの理由で、私が質問を投稿したときにあなたが提供したドキュメントを見つけることができなかった。 – jambriz

+0

私はそのことを知っている - 私はちょうどそれに遭遇し、 – Nigul

0

が判明し、このエラーに返されますので

を呼び出す場合
as400ds.setSavePasswordWhenSerialized(true); 

最初のインスタンスで作成されたパスワードは共有されています。

まだ、私にとっては、これは予想される動作ではありません。他のJDBCドライバでは、AFAIKに似た何かを行う必要はありません。

これの背後にある理由を説明するために気をつけてください。

このメソッドを呼び出すときにセキュリティ上の脆弱性が存在する可能性がありますか?または何も必要ないjdbcドライバの残りの部分と一緒に?

関連する問題