--- title: "wallaroo.auth" type: docs linkTitle: "wallaroo.auth" ---

Handles authentication to the Wallaroo platform.

Performs a "device code"-style OAuth login flow.

The code is organized as follows:

- Auth objects returned by `create()` should be placed on each request to platform APIs. Currently, we have the following types:

  - NoAuth: Does not modify requests
  - PlatformAuth: Places `Authorization: Bearer XXX` headers on each outgoing request

- Objects derived from TokenFetcher know how to obtain an AccessToken from a particular provider:

  - KeycloakTokenFetcher: Fetches a token from Keycloak using a device code login flow
  - CachedTokenFetcher: Wraps another TokenFetcher and caches the value to a JSON file to reduce the number of user logins needed.

class AuthType(enum.Enum):

Defines all the supported auth types.

Handles conversions from string names to enum values.

NONE = <AuthType.NONE: 'none'>
SSO = <AuthType.SSO: 'sso'>
USER_PASSWORD = <AuthType.USER_PASSWORD: 'user_password'>
TEST_AUTH = <AuthType.TEST_AUTH: 'test_auth'>
TOKEN = <AuthType.TOKEN: 'token'>
ORCH = <AuthType.ORCH: 'orch'>

##### Inherited Members

enum.Enum
  name
  value

class TokenData(typing.NamedTuple):

TokenData(token, user_email, user_id)

TokenData(token: str, user_email: str, user_id: str)

Create new instance of TokenData(token, user_email, user_id)

token: str

Alias for field number 0

user_email: str

Alias for field number 1

user_id: str

Alias for field number 2

def to_dict(self) -> Dict[str, str]:

##### Inherited Members

builtins.tuple
  index
  count

def create( keycloak_addr: str, auth_type: Union[wallaroo.auth.AuthType, str, NoneType]) -> wallaroo.auth._WallarooAuth:

Returns an auth object of the corresponding type.

###### Parameters

- str keycloak_addr: Address of the Keycloak instance to auth against
- AuthType or str auth_type: Type of authentication to use

###### Returns

> Auth object that can be passed to all `requests` calls

###### Raises

- NotImplementedError: if auth_type is not recognized

def logout():

Removes cached values for all third-party auth providers.

This will not invalidate auth objects already created with `create()`.

class AuthError(builtins.Exception):

Base type for all errors in this module.

AuthError(message: str, code: Optional[int] = None)

##### Inherited Members

builtins.BaseException
  with_traceback
  args

class TokenFetchError(AuthError):

Errors encountered while performing a login.

##### Inherited Members

AuthError
  AuthError
builtins.BaseException
  with_traceback
  args

class TokenRefreshError(AuthError):

Errors encountered while refreshing an AccessToken.

##### Inherited Members

AuthError
  AuthError
builtins.BaseException
  with_traceback
  args