周囲で見かける高機能で通信力があり、スケール可能なアプリの裏側には、必ず1つ以上のAPIが存在します。現代のアプリ開発を革新し、あらゆる面で向上させていますが、そのセキュリティの弱さは多くの懸念材料です。
十分に守られなければ、APIはサイバー攻撃の侵入口となります。APIトークンは、この重要な要素の安全性を向上させます。以降、詳しく紹介します。
簡単に言えば、APIトークン(またはアクセス トークン)は、各APIに付属する固有のコードで、利用者固有の情報が含まれています。構造上は小さい存在ですが、膨大なデータを内包しています。
これらはデバイスごとに異なります。スマートフォン用のAPIトークンはラップトップでは利用できず、その逆も同様です。利用者がログインやAPI利用の際に異なるデバイスを使用するたび、別のAPIトークンが必要となります。一見手間に感じるかもしれませんが、セキュリティ向上につながり、1つのAPIの過剰利用や予測を防ぎます。
フェデレーションやドメインの形成時には、標準の認可・認証プロセスに従います。この流れに関わるAPIは、共通のモデルに基づいていることが多いです。
APIトークンは、3つの構成要素によりデータ保存が可能となっています。それぞれが異なる役割を担い、特定の情報管理を行います。その3つの要素は次の通りです:
最も重要なペイロードは、APIが使用する固有のパスキーです。各APIリソースで求められます。
ヘッダーは、トークンの形式に関する情報をAPIに伝えます。この情報により、APIはトークンからどの情報が得られるかを判断します。APIトークンの大部分を占めるため、『API本体』とも呼ばれることがあります。
ユーザーセッションの有効期限や権限の情報もヘッダーに保存されます。
ペイロードはAPIトークンの最も重要な部分です。本質的にはAPIへのパスキーとなります。特定のAPIリソースでは、トークン内の特定の要素が要求され、存在しないか不正確な場合、リソースへのアクセスができなくなります。
これら3つの要素が揃ってAPIトークンを構成します。プロジェクトの要件により、API開発者はトークン受信のプロセスを選択できます。
どちらもAPIのセキュリティ向上を目的としていますが、方法が異なります。APIトークンと同様、APIキーも文字列ですが、情報量はAPIトークンほど豊富ではありません。
各関係エンティティやサーバーには、各APIリクエストで使用される固有のAPIキーが存在します。サービス利用時にログイン情報やメールを求められるのと同じように、API利用時にもAPIキーが必要となります。
APIトークンもAPIキーも固有ですが、APIキーはアプリの確認に使われ、APIトークンは利用者確認に用いられます。アプリ確認は比較的簡易な情報で済むためです。
しかし、利用者確認にはより多くの情報が求められるため、APIトークンは大量のデータを保持します。これには利点と欠点が伴います。
情報量が増えると確認も厳密に行う必要がありますが、ビッグデータがAPIトークンを複雑にする原因にもなります。
扱いが簡単ではなく、特にIoTアプリではその運用が難しくなります。
標準化の面では、APIキーは規格が統一されていないため、APIトークンに軍配が上がります。APIトークンはアプリの要件に合わせて導入されるためです。
このため、APIキーの利用は減少傾向にあります。一方、APIトークンは完全に標準化され、各トークンは3つの要素を備えています。
アプリの種類に関わらず、APIトークンは同じ形式であるため、採用が進んでいます。
構造的には大きな差があり、APIキーはAPIトークンに比べて精度が低いため、キーが漏れるとアプリに脅威が及びます。
一方のAPIトークンは細かく管理されるため、セキュリティ管理が優れています。不正やエラーが検知されると、即時にトークンが無効化され、アプリへの影響は限定的です。
機能面では、APIトークンはAPIと非常に似た動作をします。ハッシュ形式のペイロードがトークンに付随し、予め定められた指示に従う標準プロトコルに沿って動作しています。指示内容は以下の通りです。
ペイロードを用いて、対象利用者のユーザー名とパスワードが確認されます。確認に成功すると、APIは安全な場所に格納された資産を利用者のブラウザに送信します。
利用者からの問い合わせごとにアクセス トークンが付与され、このトークンが有効な間、対象利用者はAPIにアクセス可能となります。
採用されるAPIトークン認証の方式に応じ、SSO、すなわちシングルサインオン・トークンが利用されることもあります。たとえば、Facebookのログイン情報を利用したサードパーティサービスが好例です。こうしたトークンは限定時間のみ有効で、サービスごとに異なるログイン情報を作成する手間を省きます。
APIのセキュリティは譲れない要素であり、この点でOAuth 2.0は有力な手法の一つです。
OAuthの改良版であるOAuth 2.0は、ウェブやモバイルAPIに大きく貢献しています。利用者のアクセスを監視し、エンドツーエンドのセキュリティ対策を実施することで、APIの安全性を確保します。
ここで、OAuth 2.0とAPIトークンの関係を理解します。ログイン情報、パスワード、クレジットカード情報など、機密性の高い利用者認証情報は外部サーバーに保存されることが一般的です。
このような状況下、OAuth 2.0の導入により、API開発者と利用者間の信頼関係が築かれます。APIトークンもOAuth 2.0の一部として利用者側で活用され、利用者情報の管理を向上させ、重複記録、誤入力、データの悪用を防止します。
さらに、OAuth 2.0内のSSLは利用者データとプライバシーの保護を担当し、APIトークンが不正行為発生時に即時の対処を可能にします。
APIトークンの効果的な実装方法は状況により異なりますが、標準的な枠組みは存在します。
最良の結果を得るため、各運用方法を十分に検討し、最適な戦略を選ぶ必要があります。
代表的なAPIトークン採用戦略は以下の通りです:
現状のAPIの普及率と人気を考えると、APIが未来であると断じても誤りではありません。今後もその存在感は衰えず、多く利用され続けるでしょう。これから頻繁に利用するため、セキュリティ向上策を講じる必要があります。
APIトークンは、APIのセキュリティ向上に効果的な手段です。各利用者のデータに個別の値を付与することで、プライバシーと安全性が向上します。APIセキュリティ対策に組み入れることを検討してください。
Creating a personal access token - Github
最新情報を購読