provides an API for authentication and includes concrete authentication adapters for common use case scenarios