トークン(Token)

トークン(Token)とは、本人であることや、何をしてよいかを示すために発行される、期限つきの引換券のような文字列のことです。一度本人確認を済ませた相手に渡され、それ以降のやり取りではパスワードの代わりにこの文字列を提示します。

現実世界に例えると、トークンは遊園地の入口で腕に巻いてもらうリストバンドです。入口で一度だけ本人と支払いを確認し、あとは各アトラクションでバンドを見せるだけで通れます。係員はいちいち身元を調べ直しません。期限が切れれば、そのバンドはただの紙切れになります。

パスワードとの違い

項目 パスワード トークン
作る人 利用者が決める システムが自動で発行する
有効期間 変更するまで有効 数分〜数時間で切れる
使える範囲 そのアカウント全体 発行時に決めた範囲だけ
漏れたとき 被害が長く続く 失効させれば止められる

この表のとおり、トークンは「短い期間だけ、限られた範囲で使える一時的な鍵」です。パスワードを毎回やり取りする方式に比べ、盗まれたときの被害を小さく抑えられます。

発行から利用までの流れ

手順はおおむね共通しています。まず利用者がIDとパスワードなどで本人確認を受け、成功するとサーバーがトークンを発行して手渡します。以後、利用者側のアプリはリクエストのたびにそのトークンを添えて送り、サーバーは中身を確かめてから応答します。パスワードが行き来するのは最初の一回だけになる、という点が大切です。

有効期限が短いのはわざと

不便に見える仕様には理由があります。トークンは盗まれる可能性を前提に設計されており、有効期限を短くすることで、盗まれても使える時間を限定しています。数分から数時間で切れるものが多く、切れたあとは同じ文字列を送っても拒否されます。パスワードのように「変更するまでずっと有効」ではないため、後始末がしやすいのです。

2種類を組み合わせて使う

期限が短いと、頻繁にログインし直すことになります。それを避ける工夫がアクセストークンとリフレッシュトークンの組み合わせです。実際の通信に使う前者は短命にしておき、期限が切れたら後者を使って新しいものを黙って取り直します。利用者から見れば、ログインしたままの状態が自然に続いているように感じられます。

APIの利用に欠かせない

プログラムどうしのやり取りでも主役です。他社のサービスの機能を呼び出すとき、呼び出す側はトークンを添えて、自分に権限があることを示します。このとき「読み取りだけ」「特定のフォルダだけ」といった範囲を発行時に指定できるため、必要以上の権限を渡さずに済みます。外部サービスとの連携で、アカウントごと預けなくてよいのはこの仕組みのおかげです。

中身を読める形式もある

すべてが意味のない文字列とはかぎりません。JWTと呼ばれる形式では、利用者のIDや有効期限といった情報がトークン自体に書き込まれています。サーバーはデータベースに問い合わせなくても中身を確認でき、処理が軽くなります。ただし読める形で入っているため、パスワードのような秘密の情報を入れてはいけません

盗まれたときの危険と備え

注意すべき点もあります。トークンを持っている相手は本人として扱われるため、盗まれればそのまま成りすましが成立します。通信を暗号化する、保存場所をブラウザの安全な領域にする、不審な操作があれば失効させる、といった対策が欠かせません。「短い期限」も、被害を長引かせないための備えのひとつです。

別の意味で使われることもある

同じ言葉が違う場面でも登場します。銀行のインターネットバンキングで配られる、使い捨ての数字を表示する小型機器も「ハードウェアトークン」と呼ばれます。また生成AIの分野では、文章を処理する際の細かな単位をトークンと呼び、料金や上限の計算に使われます。文脈によって指すものが変わる言葉です。

あわせて知っておきたい用語

  • APIキー
    プログラムから機能を呼び出すときに使う、識別用の文字列です。
  • セッション
    ログインしてから離れるまでの、一続きのやり取りを指します。
  • OAuth
    パスワードを渡さずに、他サービスへ権限を委ねる仕組みです。
  • ワンタイムパスワード
    一度きりしか使えない、使い捨ての確認用の数字です。

コメント

タイトルとURLをコピーしました