2016-10-05 14 views
1

多くのトークンベースの認証記事を読んできましたが、通常、サーバーがトークンをどのように検証するかを説明することはできません。私がいることを理解:トークンベースの認証では、トークンはどのように検証されますか?

  1. ユーザーは、ユーザー名/パスワードでアクセスを要求
  2. アプリケーションは、資格情報を検証
  3. アプリケーション提供し、クライアントに署名したトークントークンと、すべての要求と共に送信し
  4. クライアント店
  5. サーバーはトークンを検証し、データで応答します

しかし、手順5は具体的にどのように行われますか?

+0

サーバーは第1位にトークンを提供していたので、トークンが有効かどうか、およびそれが誰に属するのかはすでに分かっています。 –

+0

どのように?サーバーはどこかにそれを保管し、各要求のトークンを比較しますか? –

+0

もちろん、それは全体のポイントです。 –

答えて

0

トークンベースの認証用語はいくつかの状況で使用されるので、答えは常に正確な質問に依存します。あなたはJWT(JSON Web Tokens)であなたの質問にタグをつけましたので、私はそのタグに基づいていくつかの仮定を描いてこれに答えるでしょう。

JSONウェブトークン(JWT)が確実JSONオブジェクトとして当事者間の情報を伝送するためのコンパクトで自己完結型の方法を定義するオープン規格(RFC 7519)です。この情報は、にデジタル署名されているため、確認して信頼することができます。 JWTは、秘密(HMACアルゴリズムを使用)またはRSAを使用する公開鍵/秘密鍵のペアを使用して署名できます。

(強調は私、源である:上記のリンクを参照してください)この定義は、サーバーアプリケーションはトークンを検証する方法にあなたの正確な質問にいくつかの光を投げかけ

。それは、JWTの場合、関連するデジタル署名が有効かどうかをチェックすることによってそれを行います。それは実際に署名をチェックするだけではありませんが、これが最も重要なステップです。

デジタル署名:デジタルメッセージまたはドキュメントのセットが本物であるかどうかを確認するための暗号化方法、変更または改ざん輸送中に、既知の送信者から来ていません。

(ソース:Auth0 Identity Glossary

あなたはデジタルで異なるアルゴリズムを適用することによって、何かに署名することができますが、このプロセスは、以下から成るように非常に高いレベルで記述することができます。

  • 選択あなた(あなたのサーバ)だけが知る秘密です。
  • 署名するシークレットとデータを所定のアルゴリズムに渡します。

出力は、シグニチャを元々作成したものと正確に等しいものがあるかどうかを確認するために後で使用することができます。

結論として、サーバは署名されたJWTを生成し、クライアントアプリケーションに配布します。サーバは署名した秘密が誰にも知られていない限り保証します受信したトークンが改ざんされ、実際に信頼できる当事者によって発行されました。

前述したように、署名をチェックするだけでなく、サーバーはさらに検証を行うことができます。通常、少なくともトークンが有効であることも検証されます。純粋にベアラトークンと呼ばれるこの認証プロセスは、攻撃者がトークンを保持できる場合、構成された有効期間内にのみトークンを使用できるということを意味します。導かれた勧告は、ベアラトークンの寿命もまた比較的短くすべきであるということである。

0

です。トークンは、ユーザー名のパスワードとクライアントが生成するキーのハッシュにすることができます。ランダムでデータベースに格納することができます。これに固有の答えはありません。

関連する問題