Skip to content

Commit 17356fd

Browse files
fix: self signed jwt token should be string type (#1294)
* fix: self signed jwt token should be string type * chore: update sys test
1 parent 456de54 commit 17356fd

File tree

5 files changed

+15
-4
lines changed

5 files changed

+15
-4
lines changed

google/oauth2/service_account.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ def refresh(self, request):
418418
# subject exists, then we should not use self signed JWT.
419419
if self._subject is None and self._jwt_credentials is not None:
420420
self._jwt_credentials.refresh(request)
421-
self.token = self._jwt_credentials.token
421+
self.token = self._jwt_credentials.token.decode()
422422
self.expiry = self._jwt_credentials.expiry
423423
else:
424424
assertion = self._make_authorization_grant_assertion()

system_tests/secrets.tar.enc

0 Bytes
Binary file not shown.

system_tests/system_tests_sync/test_requests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@ def test_authorized_session_with_service_account_and_self_signed_jwt():
3939

4040
# Check that self-signed JWT was created and is being used
4141
assert credentials._jwt_credentials is not None
42-
assert credentials._jwt_credentials.token == credentials.token
42+
assert credentials._jwt_credentials.token.decode() == credentials.token

system_tests/system_tests_sync/test_urllib3.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,4 @@ def test_authorized_session_with_service_account_and_self_signed_jwt():
4141

4242
# Check that self-signed JWT was created and is being used
4343
assert credentials._jwt_credentials is not None
44-
assert credentials._jwt_credentials.token == credentials.token
44+
assert credentials._jwt_credentials.token.decode() == credentials.token

tests/oauth2/test_service_account.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import mock
2020
import pytest # type: ignore
21+
import six
2122

2223
from google.auth import _helpers
2324
from google.auth import crypt
@@ -470,7 +471,7 @@ def test_refresh_with_jwt_credentials(self, make_jwt):
470471

471472
token = "token"
472473
expiry = _helpers.utcnow() + datetime.timedelta(seconds=500)
473-
make_jwt.return_value = (token, expiry)
474+
make_jwt.return_value = (b"token", expiry)
474475

475476
# Credentials should start as invalid
476477
assert not credentials.valid
@@ -487,6 +488,16 @@ def test_refresh_with_jwt_credentials(self, make_jwt):
487488
assert credentials.token == token
488489
assert credentials.expiry == expiry
489490

491+
def test_refresh_with_jwt_credentials_token_type_check(self):
492+
credentials = self.make_credentials()
493+
credentials._create_self_signed_jwt("https://pubsub.googleapis.com")
494+
credentials.refresh(mock.Mock())
495+
496+
# Credentials token should be a JWT string.
497+
assert isinstance(credentials.token, six.string_types)
498+
payload = jwt.decode(credentials.token, verify=False)
499+
assert payload["aud"] == "https://pubsub.googleapis.com"
500+
490501
@mock.patch("google.oauth2._client.jwt_grant", autospec=True)
491502
@mock.patch("google.auth.jwt.Credentials.refresh", autospec=True)
492503
def test_refresh_jwt_not_used_for_domain_wide_delegation(

0 commit comments

Comments
 (0)