メインコンテンツまでスキップ

トークンベース認証は、ユーザーがユニークなアクセストークンと引き換えに本人確認を行う認証プロトコルです。 ユーザーは、トークンの有効期間中、ウェブサイト、アプリケーション、リソースにアクセスすることができ、認証情報を再入力する必要はありません。

トークンベース認証はどの様に動作しますか?

トークンベース認証は、ユーザーがシステム、デバイス、またはアプリケーションにログインすることから始まり、通常、パスワードまたはセキュリティ質問を使用します。 承認サーバーは、その初期認証を検証してから、アクセストークンを発行します。アクセストークンは、クライアントアプリケーションがAPIサーバーに安全な呼び出しまたはシグナルを送信できるようにする小さなデータです。

トークンベース認証は、サーバーにユーザーの身元とリクエストの真正性を確認するための第二の高保証要素を与えることによって機能します。

この最初のトークンによる認証プロトコルが完了すると、トークンはスタンプ付きのチケットのように機能します。 ユーザーは、トークンのライフサイクルの間、再認証することなく、関連するリソースにシームレスにアクセスし続けることができます。 このライフサイクルは、ユーザーがログアウトしたり、アプリを終了したりしたときに終了します。また、設定されたタイムアウトプロトコルによってトリガーされることもあります。

トークンベース認証の利点は何ですか?

トークンベース認証は、複数のステークホルダーに対して多くの利点を提供します。

  • より良いユーザーエクスペリエンス: ユーザーは、システム、アプリ、ウェブページに戻るたびに資格情報を再入力して再認証する必要がなく、トークンが有効である限り(通常、ログアウトまたは終了によってセッションが終了するまで)、シームレスなアクセスを維持することができます。
  • デジタルセキュリティーの追加: トークンベース認証は、従来のパスワードベースやサーバーベースの認証に対して、セキュリティのレイヤーを追加するものです。 トークンは一般に、パスワードよりもはるかに盗みにくく、ハッキングやその他の危険にさらされにくいです。
  • 管理者による制御: トークンベース認証は、管理者が各ユーザーのアクションやトランザクションをより詳細に制御し、可視化することを可能にします。
  • より軽い技術負担: トークン生成とトークン検証を完全に切り離すことができるため、Entrust Identity and Access Managementソリューションが提供するようなセカンダリサービスによって検証を処理することが可能です。 これにより、社内のサーバーやデバイスにかかる負荷が大幅に軽減されます。

アクセストークンとは何ですか?

アクセストークンまたは認証トークンは、デバイス、アプリケーション、またはその他のデジタルリソースへのアクセスをユーザーに付与します。 現在、トークンにはさまざまな種類があります。

ハードウェアトークン

ハードウェアトークンは小さな物理デバイスで、ユーザーがリソースへのアクセスを得るために提示するものです。 ハードウェアトークンには、接続型(USB、スマートカード、ワンタイムパスワードキーホブなど)、非接触型(Bluetoothトークンなど)があります。 このトークンはユーザーが持ち歩きます。 トークン型認証の黎明期(つまり スマートフォンが登場する前)は、ハードウェアトークンが唯一の選択肢でした。 しかし、ハードウェアトークンは比較的高価で、紛失や盗難の可能性があり、その結果、より強力なITサポートを必要とすることが多くありました。

ソフトウェアトークン

切断型トークンとも呼ばれるソフトウェアトークンは、完全に非接触で、どこからでも本人認証ができます。 現在のソフトウェアトークンの最も一般的な例は、スマートフォンを使って二要素認証(2FA)多要素認証(MFA)、または JSONウェブトークンを促進するモバイルアプリケーションです。 ソフトウェアトークンは、コスト削減、ユーザーの手間の削減、紛失や盗難の可能性の低減、中間者攻撃のリスクの低減といった利点を持ち、トークンベースの認証の主流となりつつあります。

オープンソースやJSONのウェブトークンとは何ですか?

切断型またはソフトウェア型トークンの最も一般的なタイプは、オープンソース型トークン、より具体的にはJSONウェブトークン(JWT)です。 JSONは、情報をJSONオブジェクトとしてエンコードするためのシンプルで自己完結なプロトコルを提供するオープンソースの標準規格(RFC 7519)で、これにより、情報を効率的かつ安全に相互転送することが可能になります。 JWTは非常にコンパクトなオブジェクトで、クエリー文字列、ヘッダー属性、POSTリクエストのボディなど、さまざまな効率的な方法で送信できるため、人気が高まっています。

オープンソースやJSONのウェブトークンの構成要素

JSONウェブトークンは、3つの部分から構成されています。

  • ヘッダー: トークンの種類と暗号化アルゴリズム
  • ペイロード: 指定されたリソースの認証情報
  • 署名: ペイロードの真偽を確認するための暗号鍵

トークンベース認証はどのように実装するのですか?

トークンベース認証プロトコルを実装するには、5つの重要なステップがあります。

  1. リクエスト: ユーザーがログイン情報を入力します
  2. 検証: サーバーがユーザーの認証情報を確認します
  3. トークン提出: サーバーが設定された期間だけ有効なトークンを生成します
  4. ストレージ: トークンはユーザーのウェブブラウザに保存され、将来使用することができます
  5. 有効期限: トークンは一定期間有効です

トークンベース認証を導入するための5つのステップ

トークンベース認証はどのような場合に推奨されますか?

パスワードやサーバーベースの認証でも、セキュリティのニーズを満たすのに十分な場合が多くあります。 しかし、場合によってはトークンベース認証のセキュリティ、制御、ユーザーの利便性が特に有効であることを示すいくつかの特徴があります。

  • 一時的なアクセスを頻繁に許可するシステム/リソース: ユーザー数が曜日や時間によって大きく異なる場合、一時的なユーザーアクセスの許可と取り消しを行う従来のプロトコルは、時間、コスト、技術面で過剰な負担となる可能性があります。 トークンは、安全でシームレスな一時的アクセスのためのダイナミックで機敏かつコスト効率の高いソリューションを提供することができます。
  • きめ細かい入退室管理が必要なシステム/リソース: 例えば、文書の特定の部分へのアクセスを許可したり、特定の編集や使用権限を付与したりするなど、より細かいレベルまでアクセスを制御する必要がある場合、パスワードベースの認証ではうまくいきません。 トークンベース認証は、こうしたより詳細な権限や、よりきめ細かい管理制御に最適です。
  • ハッキングや侵害の危険性が高いシステム/リソース: デジタルリソースに特に重要な情報が含まれている場合、トークンベース認証はパスワードベース認証よりも大きなステップアップをもたらします。
  • 高度に規制されたシステム/リソース: 上記と関連して、デジタルリソースがデータプライバシー要件やその他の規制によって保護されている機密情報を含んでいる場合、それらの規制はベーシックなパスワード認証以上の認証を規定している場合があります。 トークンベース認証は、適切に設定されていれば、高保証の保護に対するコンプライアンス要件を満たすことができます。

高信頼性トークンベース認証のベストプラクティス

トークンベース認証は、従来のパスワードベースの認証より大きく進歩していることは間違いありませんが、トークンは依然として「ベアラートークン」、つまり、トークンを保持する者にアクセスが許可されるものと考えられています。 つまり、モバイルアプリケーションのようなソフトウェアトークンであっても、盗難や危険にさらされる可能性があるのです。 悪意のある人物がトークンを所持した場合、そのトークンを使って保護されたリソースや情報に不正にアクセスされる可能性があります。 このようなリスクから保護するためには、以下のベストプラクティスに基づいてトークンベースの認証プログラムを構築することが重要です。

  • トークンの機密保持: ユーザーは、トークン(ハードウェアまたはソフトウェア)を他の安全なクレデンシャルと同様に扱う必要があります。 つまり、紛失や盗難を防ぐために、安全かつ確実に保管し、決して共有せず、確認されたサービスのみに公開する必要があります。
  • トークンペイロードの簡素化: トークンは、ユーザーを認証するために必要最小限の情報を使用するように設計されています。 暗号化されていますが、悪意ある者によって簡単に解読されてしまう可能性があります。 このため、トークンのペイロードには機密情報や保護された情報を決して含めず、ペイロードへのクレームを最小限に抑えるようにしています。 これは、スピード/パフォーマンスの向上にもつながります。
  • トークンの有効期限を定義し、トークンの失効を有効にする: トークンは通常、ユーザーがログアウトまたはハードがシャットダウンしたときに自動的に失効するように設定されています。 しかし、技術的には、このセッション終了のトリガーがなければ、署名されたトークンには有効期限は組み込まれていません。 漏洩を防ぐために、すべてのトークンにデフォルトの有効期限を設定し、必要に応じてトークンを失効させるためのプロトコルを導入する必要があります。
  • 常にHTTPS接続を使用する: 安全でない接続では、通信中にトークンを傍受し、盗むことが非常に簡単になります。 トークン検証サーバーとの間でトークンを転送する際は、必ずHTTPS接続を使用してください。
  • 追加レイヤーやセキュリティの検討: お客様のセキュリティ要件によっては、基本的なトークンベース認証に加えて、追加のセキュリティおよび認証プロトコルを追加する必要があります。 たとえば、一部のユースケースでは、すべてのトークンが正しいサーバーから生成されていることを保証する、第2のトークン検証システムを追加しています。