OAuth2: access_denied
OAuth2認証でアクセスが拒否された際のエラー原因と解決策
概要
OAuth2フローでユーザーまたはサーバーがアクセスを拒否した際に発生するエラーです。
エラーメッセージ
{
"error": "access_denied",
"error_description": "The resource owner or authorization server denied the request"
}
原因
- ユーザーが同意を拒否: 認可画面でキャンセル
- スコープの権限不足: 要求したスコープが許可されていない
- クライアントIDの不正: 登録されていないクライアント
- リダイレクトURIの不一致: 登録URIと異なる
解決策
1. スコープを確認
| |
2. リダイレクトURIを登録
# OAuth プロバイダーの管理画面で登録
許可されたリダイレクトURI:
- http://localhost:3000/callback (開発)
- https://example.com/callback (本番)
3. エラーハンドリング
| |
4. クライアント設定を確認
| |
よくある間違い
- 本番と開発でクライアントIDを混同
- リダイレクトURIの末尾スラッシュ
- 過剰なスコープ要求でユーザーが警戒
- PKCEを使用していない(OAuth 2.1では必須)
セキュリティベストプラクティス
OAuth 2.1ではPKCE(Proof Key for Code Exchange)が必須です。invalid_grantエラーの防止にも有効です。
| |
参考リンク
関連エラー
関連エラー
Security の他のエラー
この記事は役に立ちましたか?