"""Exception hierarchy for OAuth2 operations.
This module defines all custom exceptions that can be raised during OAuth2
authentication flows, providing clear error handling and debugging information.
"""
from __future__ import annotations
__all__ = (
"ExpiredStateError",
"InvalidStateError",
"OAuthError",
"ProviderNotConfiguredError",
"StateValidationError",
"TokenExchangeError",
"TokenRefreshError",
"UserInfoError",
)
[docs]
class OAuthError(Exception):
"""Base exception for all OAuth2-related errors.
All custom exceptions in this library inherit from this base class,
allowing consumers to catch all OAuth errors with a single handler.
"""
[docs]
class TokenExchangeError(OAuthError):
"""Raised when the authorization code to token exchange fails.
This error occurs during the OAuth2 callback phase when exchanging the
authorization code for an access token. Common causes include:
- Invalid or expired authorization code
- Incorrect client credentials
- Mismatched redirect URI
- Network or provider errors
"""
[docs]
class TokenRefreshError(OAuthError):
"""Raised when token refresh fails.
This error occurs when attempting to use a refresh token to obtain a new
access token. Common causes include:
- Invalid or expired refresh token
- Revoked refresh token
- Provider policy changes
- Network or provider errors
"""
[docs]
class UserInfoError(OAuthError):
"""Raised when fetching user information from the provider fails.
This error occurs when the provider's user info endpoint returns an error
or unexpected response. Common causes include:
- Invalid or expired access token
- Insufficient scope permissions
- Provider API changes
- Network or provider errors
"""
[docs]
class StateValidationError(OAuthError):
"""Base exception for OAuth state validation errors.
State validation is critical for preventing CSRF attacks. This base class
is subclassed for specific state-related errors.
"""
[docs]
class InvalidStateError(StateValidationError):
"""Raised when the OAuth state parameter is invalid or doesn't match.
This security-critical error indicates a potential CSRF attack or
application error. Causes include:
- State parameter missing from callback
- State doesn't match any stored state
- State has been tampered with
"""
[docs]
class ExpiredStateError(StateValidationError):
"""Raised when the OAuth state has exceeded its time-to-live.
State tokens have a limited lifetime to reduce attack windows. This error
indicates the authorization flow took too long to complete.
"""