Skip to content
This repository was archived by the owner on May 26, 2020. It is now read-only.

Commit ab02d5b

Browse files
committed
Fix #189
Include issuer and audience in payload if set.
1 parent 4273bcb commit ab02d5b

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

rest_framework_jwt/utils.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ def jwt_payload_handler(user):
3333
datetime.utcnow().utctimetuple()
3434
)
3535

36+
if api_settings.JWT_AUDIENCE is not None:
37+
payload['aud'] = api_settings.JWT_AUDIENCE
38+
39+
if api_settings.JWT_ISSUER is not None:
40+
payload['iss'] = api_settings.JWT_ISSUER
41+
3642
return payload
3743

3844

tests/test_utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def test_jwt_decode_verify_exp(self):
7474

7575
class TestAudience(TestCase):
7676
def setUp(self):
77-
api_settings.JWT_AUDIENCE = "my_aud"
77+
api_settings.JWT_AUDIENCE = 'my_aud'
7878

7979
self.username = 'jpueblo'
8080
self.email = '[email protected]'
@@ -84,20 +84,20 @@ def setUp(self):
8484

8585
def test_fail_audience_missing(self):
8686
payload = utils.jwt_payload_handler(self.user)
87+
del payload['aud']
8788
token = utils.jwt_encode_handler(payload)
8889
with self.assertRaises(jwt.exceptions.MissingRequiredClaimError):
8990
utils.jwt_decode_handler(token)
9091

9192
def test_fail_audience_wrong(self):
9293
payload = utils.jwt_payload_handler(self.user)
93-
payload['aud'] = "my_aud2"
94+
payload['aud'] = 'my_aud2'
9495
token = utils.jwt_encode_handler(payload)
9596
with self.assertRaises(jwt.exceptions.InvalidAudienceError):
9697
utils.jwt_decode_handler(token)
9798

9899
def test_correct_audience(self):
99100
payload = utils.jwt_payload_handler(self.user)
100-
payload['aud'] = "my_aud"
101101
token = utils.jwt_encode_handler(payload)
102102
decoded_payload = utils.jwt_decode_handler(token)
103103
self.assertEqual(decoded_payload, payload)
@@ -108,7 +108,7 @@ def tearDown(self):
108108

109109
class TestIssuer(TestCase):
110110
def setUp(self):
111-
api_settings.JWT_ISSUER = "example.com"
111+
api_settings.JWT_ISSUER = 'example.com'
112112

113113
self.username = 'jpueblo'
114114
self.email = '[email protected]'
@@ -118,20 +118,20 @@ def setUp(self):
118118

119119
def test_fail_issuer_missing(self):
120120
payload = utils.jwt_payload_handler(self.user)
121+
del payload['iss']
121122
token = utils.jwt_encode_handler(payload)
122123
with self.assertRaises(jwt.exceptions.MissingRequiredClaimError):
123124
utils.jwt_decode_handler(token)
124125

125126
def test_fail_issuer_wrong(self):
126127
payload = utils.jwt_payload_handler(self.user)
127-
payload['iss'] = "example2.com"
128+
payload['iss'] = 'example2.com'
128129
token = utils.jwt_encode_handler(payload)
129130
with self.assertRaises(jwt.exceptions.InvalidIssuerError):
130131
utils.jwt_decode_handler(token)
131132

132133
def test_correct_issuer(self):
133134
payload = utils.jwt_payload_handler(self.user)
134-
payload['iss'] = "example.com"
135135
token = utils.jwt_encode_handler(payload)
136136
decoded_payload = utils.jwt_decode_handler(token)
137137
self.assertEqual(decoded_payload, payload)

0 commit comments

Comments
 (0)