Skip to content

Commit e98325a

Browse files
committed
deprecate jwk.loads and jwk.dumps
1 parent d186f68 commit e98325a

File tree

4 files changed

+24
-22
lines changed

4 files changed

+24
-22
lines changed

authlib/jose/jwk.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1+
from authlib.deprecate import deprecate
12
from .rfc7517 import JsonWebKey
23

34

45
def loads(obj, kid=None):
5-
# TODO: deprecate
6+
deprecate('Please use ``JsonWebKey`` directly.')
67
key_set = JsonWebKey.import_key_set(obj)
78
if key_set:
89
return key_set.find_by_kid(kid)
910
return JsonWebKey.import_key(obj)
1011

1112

1213
def dumps(key, kty=None, **params):
13-
# TODO: deprecate
14+
deprecate('Please use ``JsonWebKey`` directly.')
1415
if kty:
1516
params['kty'] = kty
1617

tests/clients/test_django/test_oauth_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from unittest import mock
2-
from authlib.jose import jwk
2+
from authlib.jose import JsonWebKey
33
from authlib.oidc.core.grants.util import generate_id_token
44
from authlib.integrations.django_client import OAuth, OAuthError
55
from authlib.common.urls import urlparse, url_decode
@@ -201,13 +201,13 @@ def test_oauth2_authorize_code_verifier(self):
201201
def test_openid_authorize(self):
202202
request = self.factory.get('/login')
203203
request.session = self.factory.session
204-
key = jwk.dumps('secret', 'oct', kid='f')
204+
secret_key = JsonWebKey.import_key('secret', {'kty': 'oct', 'kid': 'f'})
205205

206206
oauth = OAuth()
207207
client = oauth.register(
208208
'dev',
209209
client_id='dev',
210-
jwks={'keys': [key]},
210+
jwks={'keys': [secret_key.as_dict()]},
211211
api_base_url='https://i.b/api',
212212
access_token_url='https://i.b/token',
213213
authorize_url='https://i.b/authorize',

tests/clients/test_flask/test_user_mixin.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from unittest import TestCase, mock
22
from flask import Flask
3-
from authlib.jose import jwk
3+
from authlib.jose import JsonWebKey
44
from authlib.jose.errors import InvalidClaimError
55
from authlib.integrations.flask_client import OAuth
66
from authlib.oidc.core.grants.util import generate_id_token
77
from ..util import get_bearer_token, read_key_file
88

9+
secret_key = JsonWebKey.import_key('secret', {'kty': 'oct', 'kid': 'f'})
10+
911

1012
class FlaskUserMixinTest(TestCase):
1113
def test_fetch_userinfo(self):
@@ -32,10 +34,9 @@ def fake_send(sess, req, **kwargs):
3234
self.assertEqual(user.sub, '123')
3335

3436
def test_parse_id_token(self):
35-
key = jwk.dumps('secret', 'oct', kid='f')
3637
token = get_bearer_token()
3738
id_token = generate_id_token(
38-
token, {'sub': '123'}, key,
39+
token, {'sub': '123'}, secret_key,
3940
alg='HS256', iss='https://i.b',
4041
aud='dev', exp=3600, nonce='n',
4142
)
@@ -48,7 +49,7 @@ def test_parse_id_token(self):
4849
client_id='dev',
4950
client_secret='dev',
5051
fetch_token=get_bearer_token,
51-
jwks={'keys': [key]},
52+
jwks={'keys': [secret_key.as_dict()]},
5253
issuer='https://i.b',
5354
id_token_signing_alg_values_supported=['HS256', 'RS256'],
5455
)
@@ -70,10 +71,9 @@ def test_parse_id_token(self):
7071
)
7172

7273
def test_parse_id_token_nonce_supported(self):
73-
key = jwk.dumps('secret', 'oct', kid='f')
7474
token = get_bearer_token()
7575
id_token = generate_id_token(
76-
token, {'sub': '123', 'nonce_supported': False}, key,
76+
token, {'sub': '123', 'nonce_supported': False}, secret_key,
7777
alg='HS256', iss='https://i.b',
7878
aud='dev', exp=3600,
7979
)
@@ -86,7 +86,7 @@ def test_parse_id_token_nonce_supported(self):
8686
client_id='dev',
8787
client_secret='dev',
8888
fetch_token=get_bearer_token,
89-
jwks={'keys': [key]},
89+
jwks={'keys': [secret_key.as_dict()]},
9090
issuer='https://i.b',
9191
id_token_signing_alg_values_supported=['HS256', 'RS256'],
9292
)
@@ -96,23 +96,24 @@ def test_parse_id_token_nonce_supported(self):
9696
self.assertEqual(user.sub, '123')
9797

9898
def test_runtime_error_fetch_jwks_uri(self):
99-
key = jwk.dumps('secret', 'oct', kid='f')
10099
token = get_bearer_token()
101100
id_token = generate_id_token(
102-
token, {'sub': '123'}, key,
101+
token, {'sub': '123'}, secret_key,
103102
alg='HS256', iss='https://i.b',
104103
aud='dev', exp=3600, nonce='n',
105104
)
106105

107106
app = Flask(__name__)
108107
app.secret_key = '!'
109108
oauth = OAuth(app)
109+
alt_key = secret_key.as_dict()
110+
alt_key['kid'] = 'b'
110111
client = oauth.register(
111112
'dev',
112113
client_id='dev',
113114
client_secret='dev',
114115
fetch_token=get_bearer_token,
115-
jwks={'keys': [jwk.dumps('secret', 'oct', kid='b')]},
116+
jwks={'keys': [alt_key]},
116117
issuer='https://i.b',
117118
id_token_signing_alg_values_supported=['HS256'],
118119
)
@@ -137,7 +138,7 @@ def test_force_fetch_jwks_uri(self):
137138
client_id='dev',
138139
client_secret='dev',
139140
fetch_token=get_bearer_token,
140-
jwks={'keys': [jwk.dumps('secret', 'oct', kid='f')]},
141+
jwks={'keys': [secret_key.as_dict()]},
141142
jwks_uri='https://i.b/jwks',
142143
issuer='https://i.b',
143144
)

tests/clients/test_starlette/test_user_mixin.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import pytest
22
from starlette.requests import Request
33
from authlib.integrations.starlette_client import OAuth
4-
from authlib.jose import jwk
4+
from authlib.jose import JsonWebKey
55
from authlib.jose.errors import InvalidClaimError
66
from authlib.oidc.core.grants.util import generate_id_token
77
from ..util import get_bearer_token, read_key_file
88
from ..asgi_helper import AsyncPathMapDispatch
99

10+
secret_key = JsonWebKey.import_key('secret', {'kty': 'oct', 'kid': 'f'})
11+
1012

1113
async def run_fetch_userinfo(payload):
1214
oauth = OAuth()
@@ -42,10 +44,9 @@ async def test_fetch_userinfo():
4244

4345
@pytest.mark.asyncio
4446
async def test_parse_id_token():
45-
key = jwk.dumps('secret', 'oct', kid='f')
4647
token = get_bearer_token()
4748
id_token = generate_id_token(
48-
token, {'sub': '123'}, key,
49+
token, {'sub': '123'}, secret_key,
4950
alg='HS256', iss='https://i.b',
5051
aud='dev', exp=3600, nonce='n',
5152
)
@@ -57,7 +58,7 @@ async def test_parse_id_token():
5758
client_id='dev',
5859
client_secret='dev',
5960
fetch_token=get_bearer_token,
60-
jwks={'keys': [key]},
61+
jwks={'keys': [secret_key.as_dict()]},
6162
issuer='https://i.b',
6263
id_token_signing_alg_values_supported=['HS256', 'RS256'],
6364
)
@@ -75,10 +76,9 @@ async def test_parse_id_token():
7576

7677
@pytest.mark.asyncio
7778
async def test_runtime_error_fetch_jwks_uri():
78-
key = jwk.dumps('secret', 'oct', kid='f')
7979
token = get_bearer_token()
8080
id_token = generate_id_token(
81-
token, {'sub': '123'}, key,
81+
token, {'sub': '123'}, secret_key,
8282
alg='HS256', iss='https://i.b',
8383
aud='dev', exp=3600, nonce='n',
8484
)

0 commit comments

Comments
 (0)