Skip to main content

Certification

認証システムについて

現在自分が理解しているもの

  • トークンベースの認証システム

一般的な認証システム

  1. セッションベースの認証: クライアントがサーバーにログイン情報を提供し、サーバーがセッションを作成して一意のセッションIDをクライアントに返します。以降のリクエストでは、クライアントはセッションIDをサーバーに提供して認証を行います。サーバーはセッションIDを使用してセッション情報を管理し、ユーザーを認証します。

  2. HTTPベーシック認証: クライアントがリクエストのヘッダーにBase64でエンコードされたユーザー名とパスワードを含めて送信します。サーバーは受け取った認証情報を検証してアクセスを許可または拒否します。

  3. トークンベースの認証システム

  4. OAuth: クライアントが外部サービスへのアクセスを許可するために、OAuthプロトコルを使用して認証および認可を行います。ユーザーは外部サービスにログインし、アクセストークンを取得します。そのアクセストークンを使用して、クライアントは外部サービスのリソースにアクセスできます。

  5. SAML (Security Assertion Markup Language): シングルサインオン(SSO)プロトコルとして使用される、XMLベースの標準的な認証方式です。ユーザーは認証サーバーに対してログイン情報を提供し、認証サーバーはサービスプロバイダーに対して認証情報を発行します。

  6. OpenID Connect: OAuth 2.0プロトコルをベースにした認証および認可のフレームワークであり、シングルサインオン(SSO)をサポートします。ユーザーはOpenIDプロバイダーにログインし、クライアントはOpenID Connectプロトコルを使用してユーザーの認証とユーザー情報の取得を行います。

これらは一部の認証方式の例ですが、実際にはさまざまな認証方式が存在します。適切な認証方式は、アプリケーションの要件やセキュリティポリシーに応じて選択する必要があります。

トークンベースの認証システム

トークンの取り消しリスト(Revoked Token List)は、トークンベースの認証システムにおいて使用される1つの手法です。取り消しリストは、以前に発行されたトークンのうち、使用を無効化する必要があるものをリストアップしたものです。

一般的なシナリオでは、トークンが発行されるときに、そのトークンに関連する一意の識別子(通常はトークンIDやJTI)が生成されます。この識別子はトークン自体に含まれており、トークンの検証時に参照できます。

取り消しリストは、これらのトークンIDを管理し、トークンが有効であるかどうかを判定するために使用されます。有効でない(取り消された)トークンIDがリストに含まれている場合、トークンは無効と見なされます。このような場合、トークンは使用できず、認証が拒否されることが期待されます。

トークンの取り消しリストを管理する方法は、実装に依存します。一般的なアプローチは、データベースやキャッシュなどを使用して取り消しリストを保存することです。トークンの有効期限が切れるまでの間、取り消しリストは定期的にチェックされ、不要なトークンがリストから削除されることが重要です。

取り消しリストの管理には、トークンの発行元や管理者が関与する必要があります。トークンが不正に使用された場合やセキュリティ上のリスクがある場合に、取り消しリストにトークンIDを追加できます。

ただし、トークンの取り消しリストの実装は、システムのセキュリティ要件や利用状況に応じて異なる場合があります。適切なセキュリティプラクティスに従い、必要に応じてトークンの取り消しリストを検討して実装することが重要です。

取り消しリストにトークンを追加する理由は、セキュリティ上のリスクやトークンの不正利用を防ぐためです。以下に、取り消しリストにトークンを追加する理由の一部を挙げます:

  1. トークンの盗難や漏洩: トークンが盗まれたり漏洩した場合、そのトークンは不正利用の可能性があります。トークンを取り消しリストに追加することで、不正アクセスを防ぎます。

  2. トークンの有効期限切れ前の無効化: 一部の状況では、トークンの有効期限が切れる前に、意図的にトークンを無効化する必要がある場合があります。例えば、ユーザーがアカウントを削除した場合や、アクセス権限が変更された場合などです。

  3. トークンのセッション管理: トークンを使用してセッションを管理する場合、セッションの終了やログアウト時にトークンを取り消しリストに追加することで、セッションの無効化を行います。

ただし、トークンの管理方法はアプリケーションや使用する認証プロトコルによって異なります。DynamoDBを使用してリフレッシュトークンを管理している場合、取り消しリストの代わりにDynamoDB内のトークンの状態を管理する方法が適切な場合があります。

重要なのは、トークンの安全性と有効性を確保するために適切なセキュリティ対策を講じることです。トークンの取り消しリストはその1つの手法であり、アプリケーションのセキュリティ要件に基づいて適切に検討する必要があります。

取り消しリスト

トークンをログアウトなどで削除した後、削除したトークンを管理するものを取り消しリストという。
セキュリティ要件によってはトークン取り消しリストは必要。