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: """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: str, client_id: str, authority: str, home_account_id: str, username: 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) -> str: return self._authority @property def client_id(self) -> str: return self._client_id @property def home_account_id(self) -> str: return self._home_account_id @property def tenant_id(self) -> str: return self._tenant_id @property def username(self) -> str: """The authenticated user's username""" return self._username
[docs] @classmethod def deserialize(cls, data: 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) -> 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)