複数のサーバーを含むシステム設定があります。たとえば、アクセス管理サーバーは、ユーザーがアプリケーションにログインするときに認証部分を実行し、ログインに成功すると、HTTP 要求を Web サーバーに転送し、Web サーバーはそれをさらにアプリケーション サーバーに転送します。
ここでの要件は、 での認証中にAM server
、Cookie にデータを書き込む必要があることです。これらの Cookie は、アプリケーション サーバーに転送される HTTP 要求に追加されます。App Server にデプロイされたアプリケーションは、これらの Cookie を読み取り、値を使用します。
これは私が実行し、正常にテストしました。しかし実際には、Cookie のデータは暗号化された形式である必要があります。そのため、AM サーバーはデータを暗号化し、アプリ サーバーはデータを復号化して使用する必要があります。AM サーバー上に を作成し、JCEKS keystore
keytool コマンドを使用して暗号化キーを 1 つ追加しました。AES-128
次に、AM サーバーで作成したカスタム クラスで、Cipher を使用してデータをアルゴリズムで暗号化します。これは正常に行われます。
また、アプリ サーバーに別のアプリを作成JCEKS keystor
し、keytool コマンドを使用して暗号化キーを追加しました。次に、AM サーバーから証明書をエクスポートし、App サーバーの にエントリを作成した App サーバーにkeystore
インポートしました。しかし、Cipher と AES-128 を使用してアプリ サーバー上のデータを復号化すると、例外が発生します。keystore
TrustedCert
keystore
javax.crypto.BadPaddingException: Given final block not properly padded
キーストアのセットアップで何かが欠けているに違いありません。これを行う方法について、いくつかのガイダンスを提供してください。
ありがとう!