トークンベース認証とは?
- IAM 用語集
- トークンベース認証とは?
トークンベース認証とは、暗号化されたトークンを使用してユーザーのアイデンティティを確認するセキュリティプロトコルのことです。 トークンベース認証では、ユーザーは有効なトークンを使用してサーバー、アプリケーション、ウェブサイト、アプリケーション・プログラミング・インターフェース (API) にアクセスします。 トークンベース認証は、二要素認証 (2FA) や多要素認証 (MFA) で一般的に使用されるプロトコルであり、従来のユーザー名とパスワードに加えて、セキュリティ層をもう1つ追加します。
トークンとは?
トークンとは、ログイン処理中にユーザーを認証するキーを指します。 トークンは、デジタルでも、スマートカードやUSBキーのような物理的なデバイスでもかまいません。 ウェブトークンはデジタルでユーザーのデバイスに保存され、その利便性と柔軟性により、組織において広く普及しています。 ウェブトークンを使用すると物理的なトークンを携帯する必要がなくなる上に、さまざまなソフトウェアシステムに簡単に統合できるため、快適な認証処理が実現します。
トークンベース認証の仕組み
以下は、トークンベース認証の手順です。
最初のリクエスト: ユーザーが、ユーザー名とパスワードを入力して、特定のアプリケーションへのアクセスを要求します。
ユーザーの確認: 認証情報が認証システムに送信され、ユーザーの認証情報が正しいかどうかがチェックされます。 確認が終わると、そのユーザーのシステム上における具体的な権限がチェックされます。
トークンの検証: システムではユーザーに対して、限られた期間しか使用できないウェブトークンを生成して発行します。
トークンの保管: トークンは、ユーザーがログアウトするか、セッションを閉じるか、トークンが期限切れになるまでユーザーのデバイスに保存されます。
認証用トークンの種類
デジタルトークンにはさまざまなタイプがあり、それぞれが安全で適切な認証プロセスを確保する上で重要な役割を果たします。 ここではデジタルトークンの5つのタイプと、認証におけるそれらの具体的な役割について解説します。
JSONウェブトークン (JWT)
JSONウェブトークンは、サーバーとクライアントという2つのエンティティ間で安全に情報を交換するために使用されるオープンスタンダード (RFC 7519) となります。JSONウェブトークンにはユーザーのアイデンティティに関する情報が格納され、格納された情報が正当なものであることを証明するためにデジタル署名されます。 JSONウェブトークンは、ヘッダ、ペイロード、デジタル署名の3つの部分で構成されています。
ヘッダ: ヘッダには、JSONウェブトークンに関する情報が含まれています。 トークンのタイプと署名に使用されるアルゴリズムが格納されています。
ペイロード: ペイロードにはユーザーのクレームが含まれています。 クレームは、特定のエンティティ (通常はユーザー) に関するさまざまな識別情報を指します。 ペイロードには、トークンの期限やユーザー権限などの追加情報が含まれている場合があります。
デジタル署名: デジタル署名は、ヘッダとペイロードを検証する暗号キーであり、送信中にメッセージが変更されていないことを確認し、ユーザーのアイデンティティを証明するためのものです。
アクセストークン
アクセストークンは、JSONウェブトークンでは最も一般的なタイプです。 こうしたトークンは、特定のサービスへのアクセスを承認することを目的としています。 ユーザーが正常にログインすると、ユーザーに対して有効期限付きのアクセストークンが発行されます。 アクセストークンにより、ユーザーに対して指定されたリソースやサービスへのアクセスが期間限定で付与されます。
IDトークン
IDトークンは、アクセストークンとは異なり、主にネットワークリソースやアプリケーションへのアクセス権を付与するために使用されます。 IDトークンとは、固有の識別子、名前、メールアドレスなどのユーザーに関する情報と認証ステータスを含むJSONウェブトークンです。 IDトークンは、クライアントアプリケーションに提供されてユーザーの識別に使用されます。
リフレッシュトークン
リフレッシュトークンは、ユーザーによるログイン認証情報の再入力を必要とせずに追加のアクセストークンを取得するために使用するJSONウェブトークンです。 その目的は、自動更新を通じてユーザーのアクセストークンの寿命を延長することにあります。
APIトークン
APIトークンとは、APIに認証を要求するユーザーに対応したコードの文字列を指します。ユーザーのアイデンティティを認証してAPIエンドポイントへのアクセスを許可し、APIリソースと安全にやり取りできるようにします。
トークンベース認証を使用するメリット
ここでは、トークンベース認証を使用するメリットを3つご紹介します。
セキュリティ: トークンの寿命が短いため、不正アクセスの可能性が最小限に抑えられます。 ユーザーがアプリケーションでセッションを完了すると、発行されたトークンは期限切れになります。 これにより、攻撃者がトークンを傍受してアカウントを侵害できる時間が制限されます。
柔軟性: トークンベース認証は、ウェブアプリケーション、モバイルアプリケーション、APIなど、複数のプラットフォームで使用できます。 これにより、ユーザーのアクセシビリティが向上すると同時に、ユーザー側では認証処理が簡単になります。
スケーラビリティ: トークンはユーザーのデバイスに保存されるため、サーバー側ではアプリケーション上でユーザーのセッションを維持する必要がありません。 これにより、サーバーは複数のリクエストを効率的に管理しながら、必要に応じてトークンを生成することができます。
トークンベース認証を使用するデメリット
ここでは、トークンベース認証を使用するデメリットを3つご紹介します。
キーが漏洩するリスク: トークンベース認証に関連した一般的なリスクとしては、トークンキーの漏洩が挙げられます。フィッシング、マルウェア、ブルートフォース、中間者 (MITM) 攻撃などのサイバー攻撃で、こうしたキーが標的にされる可能性があります。 ほとんどのウェブトークンシステムは単一のキーに依存しているため、サイバー犯罪者がキーを侵害するとシステム全体が脆弱になります。
寿命が短い: トークンは寿命が短いため、一貫した管理が必要となることを認識しておかなければなりません。 トークンを管理する際には、トークンの有効期限を把握し、必要に応じて認証情報を更新します。
トークンのサイズ: トークンは、特にユーザー情報やメタデータが大量に含まれている場合に、サイズが大きくなる可能性があります。 トークンが複雑になりサイズが大きくなると、インターネットの帯域幅が限られている環境ではネットワークの負荷を増大させる可能性があります。