認証と認可の定義
認証とは、APIにアクセスするユーザーやアプリケーションの身元を確認するプロセスである。つまり、「アクセスしようとする主体が本人であることを確認する」ということ1 2 3。
認可とは、認証済みのユーザーやアプリケーションが、特定のAPIリソースへのアクセス権限を持っているかを判断するプロセス1 2。
主な認証/認可仕組み
-
HTTP Basic Authentication4:
- 認証の仕組みで認可の仕組みは含まない
- ユーザー名とパスワードをBase64エンコードし、HTTPリクエストヘッダーに含める方式3 4
- 実装は容易だが、セキュリティレベルが低く、必ずHTTPSとの併用が必要3 5
-
APIキー認証5:
- 認証の仕組みで認可の仕組みは含まない
- 各ユーザーに固有のAPIキーを発行し、リクエストに含めて認証する方式3
- キーへの有効期限設定によるセキュリティ強化が可能3
- OAuth(Open Authorization) 2.06:
- 認可の仕組みであり、場合によって認証のフローも含む
- サードパーティアプリケーションが、ユーザーの代理としてAPIにアクセスするための権限を取得するための標準プロトコル3
- ユーザーが明示的にリソースアクセス権限を付与でき、高い安全性を実現可能3
認証/認可の基本フロー
- クライアントによるAPIの呼び出し、アクセストークン(Authorizationヘッダーなど)の提示1
- リソースサーバー(API)によるアクセストークンの検証1
- トークン検証結果に基づくバックエンドAPIリソースへのアクセス許可1
セキュリティの考慮事項
- 認証と認可の強化のため、TLSによるAPIアクセスの保護、認証・認可用資格情報やトークンの適切な保護が必要1
- APIキー認証採用時は、キー漏洩リスク対策としてのHTTPSによる通信暗号化が不可欠3
適切な認証/認可メカニズムの実装による不正アクセスの防止、データとリソースのセキュリティ確保が可能である。
参照
1 2 3 4 5 6