OAuth とは?

OAuth(Open Authorization)は、ユーザーの認証情報を共有することなく、アプリケーションやWebサイトが別のサービス上のリソースに安全にアクセスできるようにするオープンスタンダードの認可フレームワークです。

OAuth の仕組み

アプリケーションやサービスに OAuth を効果的に実装するためには、OAuth のワークフローを理解することが不可欠です。OAuth は一見複雑に思えるかもしれませんが、これをステップに分けることで、はるかに理解しやすくなります。この構造化されたプロセスの各段階は、セキュリティの強化に役立ち、保護されたリソースへのコントロールされたアクセス許可を提供します。

その仕組みは次のとおりです: 

1. 開始: クライアントは、ログインボタンまたは同様のインターフェイス要素を通じてリソース所有者に認可を求めます。

2. 認可リクエスト: クライアントはリソース所有者を認可サーバーにリダイレクトし、そこでログイン情報を入力します。

3. 認証: リソース所有者は認証情報を提供し、認可サーバーによって認証されます

4. 認可グラント: サーバーはクライアントを検証した後、リソース使用の許可を示すために、クライアントに認可グラントを発行します。

5. アクセストークンのリクエスト: ユーザーは認可コードグラントをサーバーに送信し、適切な認可を確立するためにアクセストークンをリクエストします。 

6.トークンの発行: 認可グラントを受け取ると、認可サーバーはそれを検証し、アクセストークンを発行します。

7. リソースへのアクセス: アクセストークンを使用することで、クライアントはサーバーから保護されたリソースを安全に表示して使用できるようになります。 

8. トークンの検証:サーバーは、要求されたリソースへのアクセスを許可する前に、トークンの有効性を検証する必要があります。 

9. 更新プロセス: アクセストークンの有効期限が切れた場合、プロセス全体を実行することなく、別のアクセストークンを取得できるリフレッシュトークンを取得できます。

10. 失効:必要に応じてアクセストークンとリフレッシュトークンを無効化し、アクセス権限を削除することができます。

OAuth と OAuth 2.0

2007年にOAuthがリリースされて以降、Webアプリケーションは急速に進化し、やがてこのプロトコルはやや時代遅れに見えるようになりました。OAuth 2.0 は、従来のプロトコルでは改善や対処ができなかった問題を解決するためにリリースされました。2つのバージョンの違いを理解することは、ユースケースに最適なものを選ぶうえで非常に重要です。

2つのバージョンの比較:

機能・性能

OAuth 1.0

OAuth 2.0

複雑さ

暗号計算と署名生成を必要とする複雑な実装があります。

シンプルなプロトコル設計と、より簡単な実装です

署名要件

すべてのリクエストに暗号署名が必要です

トランスポートセキュリティに TLS/HTTPS を使用しているため、署名は不要です。

ユーザーエクスペリエンス

認証のための追加のステップがあり、フローが複雑です。

認可フローは合理化されており、ユーザーのインタラクション要件は低くなっています

トークンタイプ

柔軟性が限られた単一のトークンタイプを使用します。

複数のトークンタイプがあり、より高い柔軟性を提供します

クライアントタイプ

さまざまなクライアント・タイプに対する限定的なサポート

特定のセキュリティニーズを持つ Web、モバイル、IoT アプリを幅広くサポートします

認可フロー

単一の認可フロー

異なるユースケースに対応する複数の認可フローがあります

セキュリティへの配慮

ビルトインの署名メソッドによりセキュリティが強化されます。

TLS の実装が必要な一方、より柔軟なセキュリティオプションを提供

採用およびサポート

先進的なアプリケーションではほとんどサポートされていない

大手サービスプロバイダーによって幅広くサポートされている


OAuth とシングルサインオン(SSO)

OAuth は、SSO 機能を支え、セキュリティと利便性を高め、ID 管理の安全な基盤を提供するうえで重要です。主に認可プロトコルとして機能しますが、SSO との統合により、ユーザーは1セットの認証情報だけで複数のアプリケーションを利用できるようになります。

OAuth SSO の仕組みは次のとおりです:

  • SSO における OAuth の役割: OAuth は、SSO がプラットフォームアクセスを管理するために依存する認可フレームワークを提供します。

  • ID プロバイダーとの統合: このプロトコルは ID プロバイダー(IdPs) と連携してユーザーの詳細を確認し、さまざまなサービス間で認証を管理します。 

  • フェデレーションプロトコル:OAuth は、包括的な ID 管理ソリューションを形成するために、SAML や OpenID Connect などのプロトコルと組み合わせて使用されることがよくあります。

  • ユーザーエクスペリエンスのメリット:OAuth ベースの SSO によって、ユーザーは繰り返しログインすることなく複数のサービスにすばやくアクセスできるようになり、利便性が向上します。

  • セキュリティ上の利点:OAuth は、認証を一元化することで、アクセス制御を簡素化し、セキュリティを強化します。

  • Enterprise アプリケーション: OAuth プロトコルにより、組織は特定のセキュリティニーズを満たす SSO ソリューションを実装できます。 

  • モバイルとWebの統合: OAuth は適応性に優れているため、さまざまなデバイスやプラットフォームで一貫した SSO エクスペリエンスを実現できます。

  • 課題と考慮事項:OAuth ベースの SSO の実装には、さまざまな ID プロバイダーの統合するやトークンストレージの保護などの課題が伴う可能性があります。

OAuth を実装するためのベストプラクティス10選

OAuth を正しく実装するには、ベストプラクティスに従い、セキュリティに細心の注意を払う必要があります。OAuth を適切に実行することで、ユーザーデータの安全性を確保し、貴社とその顧客の間の信頼を維持できます。 

以下は、従うべき重要なベストプラクティスの一部です。

1. セキュアな通信を使用する

リダイレクト URI を含むすべての OAuth 通信に必ず HTTPS を使用してください。HTTPS はトラフィックを暗号化し、改ざんを防ぐとともに、盗聴者が認証情報やトークンを傍受するのを防ぎます。この保護レイヤーを強化するために、厳格なトランスポートセキュリティ ポリシーを設定してください。

2. 適切なトークンストレージを実装する

クライアント側のコードがアクセスできる URL、Cookie、またはローカルストレージにベアラートークンを埋め込むことは避けてください。代わりに、適切な暗号化、アクセスコントロール、有効期限ポリシーを使用してトークンをサーバー側に保存し、侵害された場合の悪用を防ぎます。

3. すべての入力を検証する

SQL インジェクションやクロスサイトスクリプティング(XSS)などの攻撃から防御するため、サーバー側ですべての入力値を徹底的に検証します。検証されていない入力は、データ侵害やアカウント乗っ取りにつながる可能性があります。

4. 有効期限の短いアクセストークンを使用する

露出を制限するために、更新メカニズムと有効期限を備えたアクセストークンを設計します。セキュリティのニーズとユーザーの設定に基づいて、トークンの更新と無効化に関する明確なポリシーを定義します。

5. PKCE を実装する

PKCE(Proof Key for Code Exchange)によって、攻撃者ではなく自社のアプリケーションのみが認可コードをトークンと交換できるようにすることで、OAuth フローにセキュリティレイヤーが追加されます。パブリッククライアントに対して PKCE をデフォルトで有効にします。

6. クライアントシークレットを保護する

漏洩のリスクを軽減するために、クライアントシークレットを環境変数またはハッシュ化された形式で保存し、それらへのアクセスを制限し、定期的にローテーションします。

7. 堅牢なエラー処理を実装する

エラーレスポンスで機密情報が露出するのを回避します。攻撃者が潜在的な脆弱性に関するインサイトを得るのを防ぐため、ユーザーには一般的なメッセージを返し、エラーの詳細はサーバー側でログに記録します。

8. 定期的なセキュリティ監査

侵入テストとコード監査を定期的に実施し、OAuth のあらゆる問題をプロアクティブに検出する必要があります。安全でないストレージ、不十分な入力検証、低いトークンの強度、不適切な SSL の使用などの脆弱性をチェックし、セキュリティギャップを特定して解消します。

9. 常に最新情報を把握する

脆弱性が発見された場合、パッチが適用された最新バージョンに OAuth ライブラリと実装を更新します。OAuth の実装を最新かつ安全な状態に保つため、プログラミング言語とフレームワークのセキュリティ更新フィードに登録します。 

10. ユーザーの同意と透明性

アプリケーションがアクセスできるデータとその理由をユーザーに伝えます。ユーザーのプライバシーを尊重し、信頼を維持するため、必要な情報のみを要求し、きめ細かい許可オプションを提供します。

Fastly で OAuth セキュリティを強化

OAuth は、ユーザー認証情報のセキュリティを維持しながら、安全な委任アクセスを可能にする、最新の Web セキュリティにおける重要なコンポーネントです。サイバー脅威が絶えず進化し続ける中、機密性の高いユーザーデータを保護するために、企業で OAuth の実装を検討する必要があります。 

Fastly の最先端の edge cloud platform は、企業の既存の認証フレームワークと統合することで、OAuth のセキュリティを強化します。この統合のしやすさにより、Fastly はパフォーマンスを維持しながら、追加の保護レイヤーを提供できます。

以下は Fastly によって得られる機能とメリットの一部です。

  • リアルタイムのトラフィック制御: Fastly の エッジプラットフォームは、OAuth トークンの使用状況を監視し、トラフィックフローを正確にコントロールすることで、トークンの再利用や盗難などの脅威を防ぎます。 

  • Web アプリケーションファイアウォール(WAF)統合: Fastly's Next Gen WAF は、エッジで疑わしいトラフィックと既知の脆弱性をブロックすることで、OAuth API を保護します。

  • DDoS Protection:Fastly は悪意のあるトラフィックがサーバーに到達する前に吸収し、OAuth エンドポイントを DDoS 攻撃から保護します。 

  • CDN パフォーマンス: Fastly は グローバル CDN を使用しているため、機密性の低いデータをキャッシュして OAuth の認証リクエストを高速化します。

  • TLS 終端:Fastly は TLS によるエンドツーエンドの暗号化をサポートし、送信中に OAuth トークンの安全性が維持されることを保証します。

  • カスタム・エッジ・ロジック Fastly の VCL(Varnish Configuration Language)を使用すると、組織はトークンの有効期限や更新のコントロールなど、より厳格な OAuth トークンポリシーを作成して実装できます。

組織の Web セキュリティを強化するFastly の Next-Gen WAF の詳細については、Webサイトをご覧ください。

Fastly を試してみませんか?

ぜひご連絡ください