OAuth
OAuth(Open Authorization)は、ユーザーのセマンティックな資格情報を公開することなく、アプリケーション間でセキュアで委譲されたアクセスを可能にする広く採用されている認可フレームワークです。
定義
OAuth(オープン認証の略)は、ユーザーが第三者アプリケーションに、ログイン資格情報を共有することなく、他のサービス上の保護されたリソースへの制限付きアクセスを許可するオープン標準プロトコルです。これは、リクエストするアプリがユーザーの代わりに実行できるデータと操作を定義するスコープ付きアクセストークンを発行することで動作します。しばしば「Xでログイン」というフローに関連付けられますが、そのコア目的は認証ではなく認可です。OAuth 2.0は最も一般的なバージョンで、ウェブ、モバイル、マシンツーマシンのアクセスシナリオをサポートする複数のグラントタイプを定義し、現代のアプリケーションにおけるセキュアなAPI相互運用および委譲リソースアクセスを可能にします。エコシステムごとに実装は異なりますが、基本的な原則は資格情報の公開なしにスコープ付きトークンベースのアクセスです。
メリット
- ユーザーの認証情報を直接第三者アプリケーションと共有しないため、セキュリティが向上します。
- スコープを通じた細かいアクセス制御により、必要なものだけに権限を制限できます。
- ウェブ、モバイル、APIエコシステム全体で広くサポートされています。
- 標準化されたトークンベースのモデルにより、外部サービスとの統合が簡素化されます。
- 複数のサービスに対して一度の承諾でユーザーの操作が簡略化されます。
デメリット
- 複数のフローとオプションの仕様により、正しく実装するのは複雑です。
- OAuth自体はユーザーのアイデンティティを認証しません。
- トークンの管理およびライフサイクルを慎重に処理しないとセキュリティ上の問題が発生します。
- プロバイダーごとの異なる実装により、相互運用性の課題が生じることがあります。
- 設定ミスにより、アクセストークンが漏洩したり、過剰な権限が与えられることもあります。
使用ケース
- ユーザーのプロフィールデータへのアクセスを第三者アプリケーションに許可する(パスワードを必要としない)。
- カレンダーや連絡先などのサービスを複数のプラットフォーム間で安全に統合する。
- クライアント資格情報を用いてサーバー間通信のAPIアクセスを可能にする。
- 「Googleでログイン」などのソーシャルログインオプションを委譲された認可を通じてサポートする。
- ユーザーの代わりにクラウドリソースにアクセスできるIoTデバイスやネイティブアプリケーションを認可する。