サーバーは、クライアントからのリクエストが有効な事前承認済みクライアントのみからのものであることをどのように確認できるのでしょうか。使用するアルゴリズムとオプションを教えてもらえますか?
5 に答える
サーバーとクライアントの両方が互いの身元の信頼性を保証される相互認証を実装しようとしています。
通常は一方的な認証であるため、これはかなり新しい概念です。ここから始めて、Web サービスを使用したオラクル サイトの本格的な例を示します。それ以上に信頼できる情報は得られません:)
リンクからの抜粋:
相互認証を使用してメッセージを送信すると、クライアントがサーバーの証明書を信頼し、サーバーがクライアントの証明書を信頼する場合にのみ接続が可能になります。証明書を交換し、接続プロパティを設定するプロセスは、Secure Sockets Layer (SSL) ハンドシェイクと呼ばれます。詳細については、Java Secure Socket Extension (JSSE) リファレンス ガイドのセクション「SSL プロトコルの概要」を参照してください。
http://developers.sun.com/appserver/reference/techart/mutual_auth.html
あなたの質問はあまり明確ではありません。事前承認というのは、事前登録ということですか?はいの場合、サーバーに接続するときに検証する資格情報 (ユーザー名/パスワードまたは IP アドレスなど) を取得します。
この HTTP サーバーを特定のユーザー グループのみが使用することを意図している場合は、内部 (イントラネット) でホストするか、承認された IP アドレスのみをファイアウォールで許可することができます。
クライアントがサーバーに接続してから一定時間後に、クライアントからの最初のメッセージとしてシークレット コードを送信します。これが受信されない場合、クライアントは切断されます。
これに加えて、クライアントの IP アドレスを書き留めてから、このクライアントからの接続を一定期間防ぐことができます。
X.509 証明書の手間をすべて処理する準備ができている場合、TLS はクライアント証明書を認証するオプションも提供します。
これにより、クライアントは、正しいクライアント証明書がインストールされている場合にのみ認証できます。
すべての状況に適しているわけではありません (たとえば、ほとんどの銀行は気にしていないようです) が、あなたの状況には最適かもしれません。
他の人があなたのアプリケーションで動作するクライアントを作成するのを防ぐことはほとんど不可能です。クライアントとサーバー間のネットワーク トラフィックを監視でき、アプリケーションのコピーを持っている場合、彼らはそれを把握できます。あなたはそれを困難にしようとすることができますが、あなたは彼らを止めるのではなく、遅くするだけです.
コードの難読化を使用して配布されたコードを保護し、暗号化を使用してネットワーク トラフィックを保護できます。