私は現在、REST API、Javaでうまく機能する認証プロトコルを調べています。理解していない根本的なことがあります。OAuthプロトコル、SSL、基本的なHTTP認証、ダイジェストなど。そして、それらすべてに明らかに「クライアント」という用語の異なる意味があります。私の理解から、ほとんどの場合、この用語はWebアプリケーションまたはブラウザを意味します。しかし、一部の、たとえば基本的なHTTP認証では、この用語はユーザー自身を指します。
Webアプリケーションのインスタンスをどのように認証できるか、または認証する必要があるかを正確に理解していません。プロセスに含まれる証明書があることは知っていますが、私が見るように、サーバーにメッセージを安全に転送し、リプレイやMITM攻撃を防ぐだけです。 OAuthでは、ユーザー名とパスワードを交換した後、証明書にトークンが必要ですが、ユーザー名とパスワードはユーザー自身のものなので、私が理解しているように、クライアントを認証する部分はどこにありますか?
サーバー側とクライアント側の両方で秘密鍵と公開鍵を使用するプロトコルがいくつかあります。これにより、実際にクライアントが「だれであるか」を確認できます。しかし、これらのキーをこのWebアプリのすべてのインスタンスに適用する必要がありますか?よくわかりません。
とにかく、クライアント認証が必要になるのはどの場合ですか?ユーザーを認証し、メッセージの整合性を処理するだけで十分ではありませんか?
clientはネットワークの概念です。データは2つのマシン間で転送されます。serverおよびclient。クライアントは、会話を開始する人です。サーバーは、クライアントが接続するのを待って一日中座っているサーバーです。
userは、クライアントを制御する生物学的エンティティ(推定人間)です。認証は、サーバーが受信するものがすべて特定のユーザーからのものであることを確認するサーバーに関するものです。ただし、サーバーはユーザー(人間)とは通信せず、クライアント(ユーザーのコンピューター)と通信します。サーバーが保存された HTTP cookie を介してユーザーを認証する場合、実際にはclientを認証しています。以前は特定のクライアントに送信されましたが、そのクライアントのみが正確なCookie値を表示できます。次に、サーバーは特定のクライアントがその人間の所有者の独占的な制御下にあると想定し、人間のユーザーが関与したコンテンツを感じます。
クライアントとユーザーの違いは、ユーザーのマシンが破壊された場合(マルウェアに感染した場合など)に明らかになります。マシンは、人間のユーザーの制御外で物事を開始します。
類推すると、犬を飼っていて、その犬が私に噛まれたら、犬ではなくあなたを訴えますあなたの管理下にあります。犬が 狂犬病 (その正当な行動を説明する)と契約したとしても、それはあなたの責任です。その意味で、犬の認証はあなたを認証するのと同じくらい優れており(少なくとも私の弁護士の目には)、犬が本当に排他的に管理されていることを確認するのはあなた次第です。
Webアプリケーションと「API」を使用すると、サーバーは別のサーバーに関してクライアントとしても動作できるため、状況はさらに複雑になる可能性があります。そのセカンダリサーバーは、最初のサーバー、プロセス全体を開始した人間のユーザー、またはその両方のIDを確認する必要があります。同じ用語が再利用される場合、用語は混乱の元になることがあります。
公開鍵と秘密鍵のペアを使用する場合、秘密鍵の所有者(秘密鍵を含むマシン)はそれを使用して、公開鍵に関連する別の計算にリンクする計算を実行します。たとえば、 デジタル署名 の場合、秘密鍵の所有者は、指定されたメッセージ(バイトのシーケンス)に署名を生成します。署名は、公開鍵を使用して検証できます。デジタル署名は認証に適したツールです。検証者によって送信されたチャレンジの署名を計算することにより、秘密鍵の所有者はその検証者に秘密鍵の習熟を示します。したがって、検証者は、「所与の公開鍵に対応する秘密鍵を制御する人」と本当に話しているという保証を取得します。プロセスの興味深い部分は、検証者がそのための秘密鍵を知る必要がないことです。そのため、権限がなくても署名を検証することが可能ですgenerateシグネチャ。
OAuthには、リソース所有者(ユーザー)、クライアント(認証されるアプリケーション、およびリソースサーバー(ユーザーの資格情報を実際に検証するサーバー)の3つのパーティがあります。クライアントはリソースであるため、クライアントはWebアプリケーションです。ログインしようとしているリソース所有者(ユーザー)を確認する(および詳細を提供する可能性がある)サーバー。
OAuthのいくつかのモードでクライアントを認証することが重要です。ユーザーに関する詳細と、場合によってはリソースサーバーでユーザーのアカウントを使用するためのアクセス許可さえも、Webアプリケーション(クライアント)。
クライアントはユーザーと同義であることが多いため、用語の使用は混乱を招きますが、OAuthの場合は、用語の選択方法に過ぎません。
他のシステムでは、クライアントとユーザーの区別は、接続元のコンピューターが検証されているか、それを使用しているユーザーかを意味する場合があります。一部の認証メカニズムは、ユーザーではなくハードウェアを検証するように設計されています。たとえば、コンピューターシステムは、使用されているクライアントが特定のコンピューターであることを確認する複数のユーザーによって共有されるプライベート証明書を持つことができますが、そのコンピューターのユーザーに関する詳細は提供しません。