San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
API Security

トークンベース認証

はじめに

従来、多くのアプリやウェブサービスでは、ユーザーがサインインのたびにパスワードを記憶し入力することが求められていました。この負担に加え、ユーザーが弱いパスワードを選んだり、複数のサービスで再利用するため、セキュリティリスクも伴っていました。これらの問題は、トークンベース認証によって解決されます。では、その仕組みを見ていきましょう。

トークンベース認証

トークンの定義

まずは「トークン」というものの意味から確認する。基本的に、トークンとは秘密のパスワード、ドアをノックするような軽い動作、または認証に使われる合言葉など、身元確認のために使われる様々な形態を指す。

例えば、アニメのキャラクターがドアをノックすると、スライド式の扉が開いて顔が現れ、秘密の合言葉(『Joe sent me』など)を待ってから、不審者の侵入を防ぐ仕組みになっている場合がある。合言葉の代わりに、特有のノックのリズム(2回、止め、3回)を用いることもある。

Web上でのトランザクションにおいて、認証トークンは、ログイン、変更、購入、その他の操作時に本人確認を行うための非常に有用なツールです。認証トークンの優れている点は、ログインのように継続的に使われる場合もあれば、過去に公開したオンライン記事で述べたように、追加の手動入力が必要な場合もある点にあります。

トークンはユーザー固有の情報を含む必要がなく、計算やアルゴリズムで生成されるため、ハッカーに対してより安全です。個人の年金番号やその他の個人情報を識別子として利用する従来の方法に比べ、大きな改善と言えます。ペットの名前など、個人情報をパスワードとして用いるユーザーは、攻撃者がソーシャルメディアなどから容易に情報を取得するリスクに晒されます。

トークンベース認証 - 概要

ネット上で誰かと会話を始めることは、トークンベース認証に似た仕組みです。裏ではコードが動作し、共通の秘密のパスワードや合意された記号を共有することで認証プロセスを完了するためのトークンを生成します。不正なユーザーが貴社の資源にアクセスするのを、トークンによる身元確認で防ぎます。

トークンは多要素認証(MFA)や、アプリ、API、ウェブサイトを接続するバックエンドプロトコルで利用できます。

トークンベース認証の重要性

テクノロジーの細部にとらわれず、解決すべき問題に目を向けてみよう。不正なユーザーがネットワークに侵入し、データを盗んだりランサムウェアを仕掛けたりしないよう、正当なユーザーに身元確認を求めているのです。トークンはデバイスの秘密鍵に基づいているため、PingIDのようなアプリ、キーフォブ、もしくはパソコンに接続するドングルなどを利用することで、外部からの不正な介入を防げます。手続きが煩雑であれば、競合サービスが選ばれてしまう可能性もあります。大切なのは、ユーザーに摩擦やストレスを与えず、確実に認証できるトークンベースのソリューションを選ぶことです。スムーズに動作すれば、ユーザーは満足し、データも安全に守られます。

テクノロジーにも欠点は存在します。たとえば、運用の自動化によってユーザー体験を向上させ、同時に人員を削減した企業でも、計画や導入が不十分だと状況が悪化する場合があります。顧客の期待が高まる中、認証やその他の自動システムが失敗すると、ユーザーは不満を募らせ、企業は顧客を失いかねません。

実際のトークンベース認証

ユーザーには、ハードウェアトークン、一時的なパスワード(多くの場合携帯電話で受け取る)、またはJWT標準に基づくソフトウェアトークンなど、様々な方法で認証トークンが提供されます。

安全な方法で、すべてのトークンはユーザーの認証情報やデータを保存します。今日の厳しいデータ保護規制の下では、トークンは情報が正確で改ざんされていないことを確認できる基本的なセキュリティ要件を満たしています。また、ユーザーがパスワードを記憶せずともサインインできるため、体験が向上します。

トークンによる認証は通常、次の4つの段階で行われる:

  1. 要求 – ユーザーは最初に、ユーザー名やパスフレーズなどで身元確認を行い、保護された資産へのアクセスを要求する。
  2. 確認 – 認証により、ユーザーの資格情報が有効であり、システム上で必要な権限を有していることが確認される。
  3. トークン発行 – システムがトークンを発行し、ユーザーに提供する。ハードウェアトークンの場合は実際のデバイスを渡し、ソフトウェアトークンの場合はバックグラウンドでサーバーと連携して行われる。
  4. 保管 – 発行されたトークンは、ユーザーがアプリや携帯電話などで保持し、今後、資格情報を入力せずに認証に利用できるようになる。
Token-based Authentication in action
実際のトークンベース認証

トークンベース認証のメリットとデメリット

この方式には、他の認証方法と同様にメリットとデメリットが存在する。

メリット

  • 効率性 - ソフトウェアトークンはハードウェアトークンに比べ、より効率的かつ柔軟です。サーバーは状況に応じて必要なだけトークンを発行・検証でき、貴社のサイトやアプリにアクセスするユーザー数の拡大が容易になります。また、ハードウェアトークンを提供する手間が省けます。
  • 柔軟性 - ソフトウェアトークンは複数のサーバーで利用可能で、同時に複数のサイトやアプリの認証を行えます。多くの場合、シングルサインオン(SSO)に利用され、ユーザーの利便性とセキュリティの向上に寄与します。
  • セキュリティ - JWTトークンはステートレスであり、発行時にサーバー側の秘密鍵で検証されるため、堅牢で安全な認証手法と考えられています。

デメリット

  • 秘密鍵の漏洩 - JWT標準の大きな欠点は秘密鍵にある。開発者やサイト管理者が適切に管理できず、攻撃者に漏れると、機密情報が露呈する恐れがあります。これにより、攻撃者がユーザーになりすまし、セッションを乗っ取るリスクが生じ、検出や防止が難しくなります。
  • データオーバーヘッド - JWTは一般的なセッショントークンよりも大きく、ユーザー情報が追加されるほどサイズが増加します。情報を多く詰め込むことで、ユーザーセッションのレンダリングに時間がかかり、ページの読み込みが遅くなる可能性があります。
  • 長期認証は理想的ではない - ユーザーが長期間サインイン状態を維持するシステムは最適とは言えません。これらのトークンは頻繁な再検証を必要とし、ユーザーにとって手間となります。適切な対策として、リフレッシュトークンを利用し、しっかり管理することで、再サインインの手間を省けます。

利用ケースを十分に整理・区分してから検討することが肝心です。そうすれば、最適な選択が可能になります。また、システムに最初から組み込むべき重要な要素として、セルフ管理も挙げられます。

traditional vs token-based authentication

トークンベース認証の安全性はどれほどか?

サイバー犯罪が高度化する中、管理型サービスプロバイダー(MSP)はセキュリティ戦略や設定を最新の状態に保つ必要があります。フィッシング、ブルートフォース、辞書攻撃など、様々な手法が資格情報を狙っているため、パスワードだけでは認証が不十分となっています。

他の認証方法と組み合わせたトークンベース認証は、先進的なハッカーが盗んだパスワードを悪用するのを防ぐ、より堅固な障壁となります。トークンは、発行元のデバイス(例えば携帯電話やキーフォブ)から取得されるため、非常に安全な認証手法とされています。

認証トークン方式には多くのメリットがある一方で、リスクも存在します。携帯電話に保存されたトークンは便利ですが、デバイスの脆弱性により危険な場合もあります。SMSで送信されると通信中に傍受される恐れがあり、デバイスが紛失または盗難された場合、悪意ある第三者がトークンにアクセスする可能性があります。

とはいえ、単一の認証方式に依存するのは避けるべきです。トークン認証は、二要素認証や多要素認証と組み合わせて使用するのが望ましいです。

トークンの種類

  1. ハードウェアトークン(USBトークン)

ハードウェアトークンは、物理的なデバイスで、一度認証されると、ユーザーが保護されたネットワークにアクセスできるようになります。認証トークンまたはセキュリティトークンとも呼ばれ、二要素認証や多要素認証(2FAまたはMFA)によってセキュリティレイヤーを追加する目的で利用されます。デバイスの所有者は、アクセスしたいサービスやシステムにこれを紐づけます。

優れたユーザー体験と柔軟性を提供するため、ハードウェアトークンは様々な形状やサイズで提供されます。最も一般的なのは、キーフォブやUSB、リモートトークンです。ハードウェアトークンは主に3つのカテゴリに分類されます。

  1. JWT - JSON Webトークン

この種類は、JSON形式(RFC 7519)でデータを扱うためのオープンスタンダードです。パーティ間でデータを安全に送信するための、シンプルかつ自由な方法を提供します。JWT標準は、トークンの送受信にJavaScript Object Notation(JSON)オブジェクトを用い、認証やユーザー・アカウント情報の追加送信にも利用されます。

JWTは、URL、POSTパラメータ、またはHTTPヘッダーとして送信され、その小さなサイズゆえに迅速に処理できます。追加のデータベース参照を避けるため、JWTには必要最低限のユーザー情報が含まれています。JWTを検証する際、受け手はサーバーに問い合わせる必要がありません。

JWTは以下の3つのセグメントから構成される:

  • ヘッダー:トークンの種類や使用された暗号化アルゴリズムに関する情報を含む。
  • ペイロード:認証情報およびユーザーやアカウントに関する追加データを含む。
  • 署名:ペイロードの正当性を検証するために、暗号鍵を用いて生成される。
JWT token based authentication
JWTトークンによる認証
  1. ワンタイムパスワード(OTP)トークン

これは、一回限りのパスワードを生成する、安全なハードウェアまたはソフトウェアのデバイスです。4桁から12桁までの数字からなる個人識別番号(PIN)が、最も一般的に利用されている。

ワンタイムパスワードは多くの場合、携帯電話で生成または受信されます。電話番号の所有が確認されると、認証アプリを用いてOTPを生成でき、携帯電話がコードジェネレーターとして機能します。また、OTPはSMSで送信されることもあります。

強固な認証情報を組み合わせることで、OTPトークンは既存のユーザー名・パスワードシステムを補完します。OTPトークンは、プロバイダーに応じて同期的または非同期的にPINを生成します。

同期型トークンは、秘密鍵と現在の時刻を用いて一回限りのパスワードを生成します。一方、非同期型では、サーバーが発するチャレンジに対し、トークンが正しい応答を返すチャレンジレスポンス認証方式(CRAM)を用います。

  1. APIトークン

このトークンタイプは、貴社のサービスにアクセスを要求するアプリの一意の識別子として機能します。その後、アプリは貴社によって発行されたAPIトークンを用いてサービスにアクセスします。保存されたトークンと照合することで認証およびアクセスが行われます。場合によってはセッションIDが用いられることもありますが、これは特殊なケースです。

APIトークンは、HTTP経由でユーザー名・パスワードの組み合わせを送信するよりも安全な代替手段として注目されており、OAuth2は今日最も広く採用されているAPIセキュリティ標準の一つです。

最適な認証トークンはどれか?

最適な認証トークンは状況によって決定されます。貴社のアプリ、要件、利用ケースに応じて、OAuth、SAML、JWT、またはその他の認証トークンが選ばれるべきです。

Web API向けトークンベース認証

クラウドサービスにおけるユーザーやセッションの認証プロセスは、Web API向けトークンベース認証と呼ばれます。ユーザーのアプリが認証サービスにリクエストを送り、身元確認後にトークンが発行されると、サービスへのアクセスが可能となります。

REST APIとトークンベース認証

REST APIは、低レベルのウェブAPIよりも理解しやすいトークンベース認証の恩恵を受けています。一般的にはオープンスタンダードのJWTトークンが使われ、URL形式で長い文字列と(例えば GET、PUT、または POST の)アクションワードやエンドポイントが含まれます。RESTful APIの仕組みに興味がある場合は、ぜひ詳細を確認してみてください。

多要素認証とトークンベース認証

多要素認証において、ハードウェアトークンやソフトウェアトークンは、『所有しているもの』として分類され、『知っているもの』であるユーザー名・パスワードの組み合わせに続いて、ユーザーの身元確認に用いられます。

FAQ

Open
トークンベース認証とは何か?
Open
トークンベース認証の利点とは何ですか?
Open
トークンを使った認証の仕組みはどのようになっていますか?
Open
APIを守るためにトークンベースの認証はどれほど重要ですか?
Open
トークンベースの認証はAPI認証に使用できますか?

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック