diff --git a/ydb/iam/auth.py b/ydb/iam/auth.py index 7b4fa4e8..613b92ad 100644 --- a/ydb/iam/auth.py +++ b/ydb/iam/auth.py @@ -99,14 +99,22 @@ def set_token_expiration_timeout(self, value): @classmethod def from_file(cls, key_file, iam_endpoint=None, iam_channel_credentials=None): with open(os.path.expanduser(key_file), "r") as r: - output = json.loads(r.read()) - account_id = output.get("service_account_id", None) + key = r.read() + + return BaseJWTCredentials.from_content( + cls, key, iam_endpoint=iam_endpoint, iam_channel_credentials=iam_channel_credentials + ) + + @classmethod + def from_content(cls, key, iam_endpoint=None, iam_channel_credentials=None): + key_json = json.loads(key) + account_id = key_json.get("service_account_id", None) if account_id is None: - account_id = output.get("user_account_id", None) + account_id = key_json.get("user_account_id", None) return cls( account_id, - output["id"], - output["private_key"], + key_json["id"], + key_json["private_key"], iam_endpoint=iam_endpoint, iam_channel_credentials=iam_channel_credentials, )