Skip to content

Commit 0c3caaf

Browse files
committed
fix(jwk): return the first key when multiple keys found in key set
authlib/authlib#785
1 parent d6f0d8a commit 0c3caaf

File tree

2 files changed

+4
-13
lines changed

2 files changed

+4
-13
lines changed

src/joserfc/_keys.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,13 +148,9 @@ def get_by_kid(self, kid: str | None = None, parameters: KeyParameters | None =
148148
if parameters:
149149
keys = list(_filter_keys_by_parameters(keys, parameters))
150150

151-
if len(keys) == 1:
151+
if keys:
152152
return keys[0]
153-
154-
elif len(keys) == 0:
155-
raise InvalidKeyIdError(f"No key for kid: '{kid}'")
156-
else:
157-
raise InvalidKeyIdError(f"Multiple keys for kid: '{kid}'")
153+
raise InvalidKeyIdError(f"No key for kid: '{kid}'")
158154

159155
def pick_random_key(self, algorithm: str, parameters: KeyParameters | None = None) -> t.Optional[Key]:
160156
key_types = self.algorithm_keys.get(algorithm)

tests/jwk/test_key_methods.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,8 @@ def test_find_correct_key_with_use(self):
153153
jws.serialize_compact({"alg": "HS256", "kid": key2.kid}, "foo", key_set)
154154

155155
key_set = KeySet([key1, key2, key2])
156-
self.assertRaises(
157-
InvalidKeyIdError,
158-
jws.serialize_compact,
159-
{"alg": "HS256", "kid": key2.kid},
160-
"foo",
161-
key_set,
162-
)
156+
# return the first found key
157+
jws.serialize_compact({"alg": "HS256", "kid": key2.kid}, "foo", key_set)
163158

164159
def test_find_correct_key_with_alg(self):
165160
key = OctKey.generate_key()

0 commit comments

Comments
 (0)