clear-skies 1.19.22__py3-none-any.whl → 1.19.24__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of clear-skies might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: clear-skies
3
- Version: 1.19.22
3
+ Version: 1.19.24
4
4
  Summary: A framework for building backends in the cloud
5
5
  Home-page: https://github.com/cmancone/clearskies
6
6
  License: MIT
@@ -5,7 +5,7 @@ clearskies/authentication/auth0_jwks.py,sha256=bzqNaEoG_iPndwttRXuaKpgkDtgOCLAoo
5
5
  clearskies/authentication/auth_exception.py,sha256=8Tay3Sim2K8vAZ6ldisSJyRyN0cwX7iyGHwfglSKW_A,41
6
6
  clearskies/authentication/authorization.py,sha256=eLzBrXMNr1gYoIBZTd8I6uH3R0CfMMjhvimkJt4Amrs,601
7
7
  clearskies/authentication/jwks.py,sha256=AOrCkL7pVznTM6mbrQ3RVHCccws0b_yEtqEOe6NRw5k,3368
8
- clearskies/authentication/jwks_jwcrypto.py,sha256=Oq3lID1nXSSaBnmxzpz1TSByvyNbanUHNAmdqDsuM6k,1219
8
+ clearskies/authentication/jwks_jwcrypto.py,sha256=PqyQNJZY7P98qgdxNltwCWoPxsaWLDqPuMknB4u2mDc,1732
9
9
  clearskies/authentication/public.py,sha256=zNpglAILTU7koz22YaGpMOAtTn_dG8dAP4Q9REdbaOk,630
10
10
  clearskies/authentication/secret_bearer.py,sha256=OBkjvw4n-ZLRRtZEKyzdael03DYIwacvUxrj5V9h0Ow,2968
11
11
  clearskies/autodoc/__init__.py,sha256=JRUAmd0he8iGlgiZvxewLMIXJqnOFEdvlaKAtHpC2lo,124
@@ -127,7 +127,7 @@ clearskies/functional/string.py,sha256=HHXou_lyjntX7SMi0-hfe91Kk3grxQnU-7oi4Lon3
127
127
  clearskies/functional/validations.py,sha256=f1fTQ4rdFZouxoovAPg-YAgf0Q0QNpKEzxWWL7EFUHI,645
128
128
  clearskies/handlers/__init__.py,sha256=9tH0zk4g7Mt22opD1NlynqXwwMX2DHzLmAVihZsJsfU,1011
129
129
  clearskies/handlers/advanced_search.py,sha256=UbWDntGAGD5NM61yKEws5MfG0Xy3K_fn-i-X9FG-mKs,13746
130
- clearskies/handlers/base.py,sha256=veR6tLPS0T9dOB9cilb6b3ausgsu5bcqEqLkMuNjJvg,22428
130
+ clearskies/handlers/base.py,sha256=aFRm5R6oDJWO4TTxz9BusxuDF3aH_-QVGJUP9atNzLc,22787
131
131
  clearskies/handlers/callable.py,sha256=2pVMwllttNui4R5vlLpufPehAPL_ksh-5eBrUprNv8U,8113
132
132
  clearskies/handlers/create.py,sha256=xj_hVYma2sKDK5Vq_R9wo8f0ZXfGlXTkYU71AMyKF2U,1232
133
133
  clearskies/handlers/crud_by_method.py,sha256=BOkPX-LUvQrbRLSbyTfRh4c8nPF51dZEXSKOl7m9ZYA,435
@@ -200,7 +200,7 @@ clearskies/tests/simple_api/models/__init__.py,sha256=nUA0W6fgXw_Bxa9CudkaDkC80t
200
200
  clearskies/tests/simple_api/models/status.py,sha256=PEhPbaQh5qdUNHp8O0gz91LOLENAEBtqSaHxUPXchaM,699
201
201
  clearskies/tests/simple_api/models/user.py,sha256=5_P4Tp1tTdX7PkMJ__epPM5MA7JAeVYGas69vcWloLc,819
202
202
  clearskies/tests/simple_api/users_api.py,sha256=KYXCgEofDxHeRdQK67txN5oYUPvxxmB8JTku7L-apk4,2344
203
- clear_skies-1.19.22.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
204
- clear_skies-1.19.22.dist-info/METADATA,sha256=kuCvcPxF59ud7HOnRF4rRYyCRiPT-im2EKSJkOtyTP4,1712
205
- clear_skies-1.19.22.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
206
- clear_skies-1.19.22.dist-info/RECORD,,
203
+ clear_skies-1.19.24.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
204
+ clear_skies-1.19.24.dist-info/METADATA,sha256=eGI0jca4nmoK_VD4ADFjcJoGIDMMxOkauHWj7p2anL8,1712
205
+ clear_skies-1.19.24.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
206
+ clear_skies-1.19.24.dist-info/RECORD,,
@@ -30,10 +30,22 @@ class JWKSJwCrypto(JWKS):
30
30
  except JWException as e:
31
31
  raise ClientError(str(e))
32
32
 
33
- if self._audience and self.jwt_claims.get("aud") != self._audience:
34
- raise ClientError("Audience does not match")
35
-
36
33
  if self._issuer and self.jwt_claims.get("iss") != self._issuer:
37
34
  raise ClientError("Issuer does not match")
38
35
 
36
+ if self._audience:
37
+ jwt_audience = self.jwt_claims.get("aud")
38
+ if not jwt_audience:
39
+ raise ClientError("Audience does not match")
40
+ if isinstance(jwt_audience, str):
41
+ jwt_audience = [jwt_audience]
42
+ if not isinstance(jwt_audience, list):
43
+ raise ClientError("I don't understand the audience in that JWT")
44
+ has_match = False
45
+ for audience in jwt_audience:
46
+ if audience == self._audience:
47
+ has_match = True
48
+ if not has_match:
49
+ raise ClientError("Audience does not match")
50
+
39
51
  return True
@@ -195,6 +195,12 @@ class Base(ABC):
195
195
  return self.error(input_output, str(client_error), 400)
196
196
  except exceptions.InputError as input_error:
197
197
  return self.input_errors(input_output, input_error.errors)
198
+ except exceptions.Authentication as auth_error:
199
+ return self.error(input_output, str(auth_error), 401)
200
+ except exceptions.Authorization as auth_error:
201
+ return self.error(input_output, str(auth_error), 403)
202
+ except exceptions.NotFound as auth_error:
203
+ return self.error(input_output, str(auth_error), 404)
198
204
 
199
205
  return response
200
206