アプリケーション内の特定の重要な機能のパラメーターに署名する必要があるという要件があります。メソッドの呼び出しは RMI で行われます。私が最初に考えたのは、パラメーターのラッパー クラスを作成し、SignedObject を使用して署名することでした。しかし、これは多くのラッパー オブジェクトにつながります。
より一般的な方法でこれを達成する方法について誰かアイデアがありますか? RMI の送受信機能と広告の署名と検証をオーバーライドする可能性がありますか?
アプリケーション内の特定の重要な機能のパラメーターに署名する必要があるという要件があります。メソッドの呼び出しは RMI で行われます。私が最初に考えたのは、パラメーターのラッパー クラスを作成し、SignedObject を使用して署名することでした。しかし、これは多くのラッパー オブジェクトにつながります。
より一般的な方法でこれを達成する方法について誰かアイデアがありますか? RMI の送受信機能と広告の署名と検証をオーバーライドする可能性がありますか?
SSL 経由で RMI を実行できます。これを行うための Sun からの JSR がいくつかありましたが、専門家委員会の投票で拒否されました。そのため、非標準の方法を選択する必要があります。これは、ほとんどのアプリ サーバーが行っていると思います。
メソッドを呼び出すユーザーを認証し、関連する特権を付与するだけでは不十分ですか?このようにして、必要なパラメータを渡すことができ、検証する必要があるのは1回だけです。ユーザーになりすますことができれば、コードを使用してパラメーターに署名することもできると想定できるはずです。
他の場所から(元々はあなたから)パラメータを取得しない限り、パラメータが文字列の場合、パラメータ値を作成する人は誰でも秘密鍵を使用して暗号化でき、公開鍵を使用して復号化できます。つまり、パラメータ値を実際に歌った人。署名されたラッパーですべてのパラメーターをラップすると、オーバーヘッドが高くなる可能性があります。
もちろん、これを行うにはいくつかの方法があります。1 つは実際にデータのストリームに署名することです。もう 1 つは、バイト配列にエンコードされた引数オブジェクト インスタンスと基本型に署名することです。どちらも、ある時点で RMI にフックする必要があります。
おそらくこちらで説明されているように、RMI サービスを SOAP サービスの背後に配置する方がよいでしょう。その後、Web サービスを作成できます。Web サービスを取得したら、WS-Securityをデプロイできます。その場合、事前に定義され、調査されたメッセージ形式を使用して、トランスポート層のセキュリティを確保できます。