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. :param str tenant_id: The tenant the account should authenticate in. :param str client_id: The client ID of the application which performed the original authentication. :param str authority: The authority host used to authenticate the account. :param str home_account_id: A unique identifier of the account. :param str username: The user principal or service principal name of the account. """ 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: """The authority host used to authenticate the account. :rtype: str """ return self._authority @property def client_id(self) -> str: """The client ID of the application which performed the original authentication. :rtype: str """ return self._client_id @property def home_account_id(self) -> str: """A unique identifier of the account. :rtype: str """ return self._home_account_id @property def tenant_id(self) -> str: """The tenant the account should authenticate in. :rtype: str """ return self._tenant_id @property def username(self) -> str: """The user principal or service principal name of the account. :rtype: str """ return self._username
[docs] @classmethod def deserialize(cls, data: str) -> "AuthenticationRecord": """Deserialize a record. :param str data: A serialized record. :return: The deserialized record. :rtype: ~azure.identity.AuthenticationRecord """ 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. :return: The serialized 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)