Source code for azure.identity._auth_record

# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------
import json


SUPPORTED_VERSIONS = {"1.0"}


[docs]class AuthenticationRecord(object): """Non-secret account information for an authenticated user This class enables :class:`DeviceCodeCredential` and :class:`InteractiveBrowserCredential` to access previously cached authentication data. Applications shouldn't construct instances of this class. They should instead acquire one from a credential's **authenticate** method, such as :func:`InteractiveBrowserCredential.authenticate`. See the user_authentication sample for more details. """ def __init__(self, tenant_id, client_id, authority, home_account_id, username): # type: (str, str, str, str, str) -> None self._authority = authority self._client_id = client_id self._home_account_id = home_account_id self._tenant_id = tenant_id self._username = username @property def authority(self): # type: () -> str return self._authority @property def client_id(self): # type: () -> str return self._client_id @property def home_account_id(self): # type: () -> str return self._home_account_id @property def tenant_id(self): # type: () -> str return self._tenant_id @property def username(self): # type: () -> str """The authenticated user's username""" return self._username
[docs] @classmethod def deserialize(cls, data): # type: (str) -> AuthenticationRecord """Deserialize a record. :param str data: a serialized record """ deserialized = json.loads(data) version = deserialized.get("version") if version not in SUPPORTED_VERSIONS: raise ValueError( 'Unexpected version "{}". This package supports these versions: {}'.format(version, SUPPORTED_VERSIONS) ) return cls( authority=deserialized["authority"], client_id=deserialized["clientId"], home_account_id=deserialized["homeAccountId"], tenant_id=deserialized["tenantId"], username=deserialized["username"], )
[docs] def serialize(self): # type: () -> str """Serialize the record. :rtype: str """ record = { "authority": self._authority, "clientId": self._client_id, "homeAccountId": self._home_account_id, "tenantId": self._tenant_id, "username": self._username, "version": "1.0", } return json.dumps(record)