Skip to content

Instantly share code, notes, and snippets.

@adamchainz
Created September 14, 2022 08:32
Show Gist options
  • Save adamchainz/81b5f8e2ae1ed3a3584987338381af52 to your computer and use it in GitHub Desktop.
Save adamchainz/81b5f8e2ae1ed3a3584987338381af52 to your computer and use it in GitHub Desktop.
authlib 1.0.1 to 1.1.0 wheel diff
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/LICENSE b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/LICENSE
similarity index 100%
rename from /Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/LICENSE
rename to /Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/LICENSE
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/METADATA b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/METADATA
similarity index 99%
rename from /Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/METADATA
rename to /Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/METADATA
index da8bbee..58ce39e 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/METADATA
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/METADATA
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: Authlib
-Version: 1.0.1
+Version: 1.1.0
Summary: The ultimate Python library in building OAuth and OpenID Connect servers and clients.
Home-page: https://authlib.org/
Author: Hsiaoming Yang
@@ -103,5 +103,3 @@ If this license does not fit your company, consider to purchase a commercial
license. Find more information on `Authlib Plans`_.
.. _`Authlib Plans`: https://authlib.org/plans
-
-
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/RECORD b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/RECORD
similarity index 88%
rename from /Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/RECORD
rename to /Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/RECORD
index b93c7fa..64942d4 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/RECORD
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/RECORD
@@ -1,5 +1,5 @@
authlib/__init__.py,sha256=CoObQJQX-YGSJy-HWbJPtK6XbpfKDBc21DJwjhLnIcM,476
-authlib/consts.py,sha256=YQLy9j4z8t-AnSP1pYv_jv1o38nXGh4ccLTRqN70nos,312
+authlib/consts.py,sha256=0JPkzOuqjcVOLYuVgm1g_EoOEmyAc8uHOIlfb-Yvmtk,312
authlib/deprecate.py,sha256=GkYSPN_Tsx6FvPf1I8lWg8MtFjq2la66UlyuRAJHZX0,499
authlib/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
authlib/common/encoding.py,sha256=sdiaZwuXZI-ruNPGAhJ0oIuZTcrzdawneS_PoJAnHYk,1546
@@ -18,7 +18,7 @@ authlib/integrations/base_client/registry.py,sha256=EzMUFGpe0rShZIksp42Tx7kShayE
authlib/integrations/base_client/sync_app.py,sha256=KnDYipBKoxMoYg6904jjPFsdK5U2htK3EdTEZzzhW1U,12403
authlib/integrations/base_client/sync_openid.py,sha256=DeksbFb44QIIGXjyiMYSjnqUCB0tVn04l487V5LBdGk,2729
authlib/integrations/django_client/__init__.py,sha256=ff_Kol2-pT-7E0zav2A6tkgqMT1YYLpmVuNaKh-Fz5g,458
-authlib/integrations/django_client/apps.py,sha256=kR0zxvrRaRvIzNE_yrbJylYBuiFlZV1QqK08vL_EDa4,3251
+authlib/integrations/django_client/apps.py,sha256=88Eqsn5jy-amyCZLcfb8kd6PF2ITHXJUOBK63oX4p2I,3342
authlib/integrations/django_client/integration.py,sha256=TfgtYs2X_IwismSdX8TI73EcpoYCfjS9OovOdEP8XLA,650
authlib/integrations/django_oauth1/__init__.py,sha256=yp66WLC43YdsICGgVDbu6AfIRyPR17M43umIUcxjH10,221
authlib/integrations/django_oauth1/authorization_server.py,sha256=UAfP61s-OW0MkVVdq2ld-jjksdPVL5ui_j10sLq3N14,4446
@@ -30,7 +30,7 @@ authlib/integrations/django_oauth2/endpoints.py,sha256=lKkDmQklHNTCXK_L-6-_PrHa6
authlib/integrations/django_oauth2/resource_protector.py,sha256=bzB9V0_QrgMa5jt8mldiSmRhGjWGQmCB6mTUDPJ0XU8,2518
authlib/integrations/django_oauth2/signals.py,sha256=8SlnOsi1IuBPmrCi7dOLXK70N_m9y6B3msjMCtBMnSk,236
authlib/integrations/flask_client/__init__.py,sha256=Fh6JNvM5bF8msOvkbEfH3m1CXwfHF3ImQ3Tq1cci7J0,1699
-authlib/integrations/flask_client/apps.py,sha256=Zu0DbkpL2AdZgSIAem53K8ZfO3b1t66htJ2uKWtjobk,3651
+authlib/integrations/flask_client/apps.py,sha256=9x45-ENBiM9RRJoQ0EJahEARGo78xInCAh7E-Cc4FtU,3742
authlib/integrations/flask_client/integration.py,sha256=5zvw8EmcoHW3xiXel9gKSaH5YwGSGAE_ipCdEPjKPFk,815
authlib/integrations/flask_oauth1/__init__.py,sha256=PGDVdNJ9oGs5bYJr7oGdpQX0tE2nQJNcHJ8t-SxEAEY,260
authlib/integrations/flask_oauth1/authorization_server.py,sha256=2FB54nMUXBGIlOLHcB_zEc5tLPvUc8p0QoQi0iBHwYY,6320
@@ -42,23 +42,23 @@ authlib/integrations/flask_oauth2/errors.py,sha256=mqpfJ_iTi0yJZCT_sl6sSDScQ4BRo
authlib/integrations/flask_oauth2/resource_protector.py,sha256=K4tZIeo9PyUDIdXZBFdhwx5Nzd9DFP8i1gJrZpCxUsY,4002
authlib/integrations/flask_oauth2/signals.py,sha256=CKao8F778CkUzl7mKjF96smr7WKJ0nfxBT0onVFq10Y,341
authlib/integrations/httpx_client/__init__.py,sha256=zuO_FIAdLEJ9Ch25kTa-Nsyi2gqkPuAsXdHAeYc0nBI,804
-authlib/integrations/httpx_client/assertion_client.py,sha256=lll2OEfhg9Ifva5B16PekjxFo4hSODdA_7XhaDURQ_o,3357
-authlib/integrations/httpx_client/oauth1_client.py,sha256=xAWAFJh6Em4SefZ6x7zg9qT-2zljnWsXyXhs4Ih3mog,4048
-authlib/integrations/httpx_client/oauth2_client.py,sha256=lmwC3QvTasuGR8f0Al02flkpu2ZuI5QH6VJoMrp4dvA,8545
+authlib/integrations/httpx_client/assertion_client.py,sha256=fh4-H61Z4heiGRsgE8OBxBERjNb2QDO-FRyN3CkgL8o,3325
+authlib/integrations/httpx_client/oauth1_client.py,sha256=2_VuHKzHEArUWdYQF_9FQiVc7VompBPYRBepzBDHJkE,4068
+authlib/integrations/httpx_client/oauth2_client.py,sha256=KJUzNG8nxk6sbcMA5ug7CBy_Ft6E1NJHaIxBncvfFno,8585
authlib/integrations/httpx_client/utils.py,sha256=XF8d4xz4d7tDoaaq3LQ3GZonED1_EtW8zH_FoTcUPL4,888
authlib/integrations/requests_client/__init__.py,sha256=Nco-Q1_wOswQ9qCgBgh0rVWPYO9ddEKnlnnJ9rGZE_U,652
authlib/integrations/requests_client/assertion_session.py,sha256=skU8zaAXiVScexTJ3eaM7GjUNMvmzbRhFXaWTfJAz78,1689
authlib/integrations/requests_client/oauth1_session.py,sha256=Yw-OOh9WknaCADB5HxqoIRUin33iuCcK-_YJRnuZODo,2233
-authlib/integrations/requests_client/oauth2_session.py,sha256=V7Fs3AgUOVkKEDtNaI64Md9nxz7QnMq_esMqG6hK3CU,4289
+authlib/integrations/requests_client/oauth2_session.py,sha256=hRweMynF38Msp8ayHdomV9voAdQxgReqCDQ06QvxWJ0,4370
authlib/integrations/requests_client/utils.py,sha256=4ohGF-9JUR9Ayw63glEednsZSbscrSD4Rx0BPkPrSeA,274
authlib/integrations/sqla_oauth2/__init__.py,sha256=d8g3ipiiPtyk1JnmTDzeAKCdm-ozjNoERDWLEkpBgL8,548
authlib/integrations/sqla_oauth2/client_mixin.py,sha256=O5VYZnV1AZjmPp8WKGYHuWSAnHPQ5qU9qJIK3miEMlo,4094
authlib/integrations/sqla_oauth2/functions.py,sha256=8HDJ9C7X27rfAhJJ-tHW4C_CJ1rjX5JPfeS5cZiHoYY,3339
authlib/integrations/sqla_oauth2/tokens_mixins.py,sha256=9cBNIUxKLsaP8DTkOKlkZQ1m5guxeOnpJ9t-K8Kuy0c,2008
authlib/integrations/starlette_client/__init__.py,sha256=-MrPR0hE8B7k9vxFOos74QG6g8cLYpSEmVwU1qAeiCw,677
-authlib/integrations/starlette_client/apps.py,sha256=FT6GIshGRkRKs_B95Jyy6CUeGHASpww4VZQT8plMACA,3234
-authlib/integrations/starlette_client/integration.py,sha256=hJ7eJVTYxt3eNk8W7dvqPmBNKM0zJkhCabOg-39W0hw,1962
-authlib/jose/__init__.py,sha256=tTm334D2vphWM9H1vO_f_9ZV3MQrt4K1D86OHgCxuKo,1350
+authlib/integrations/starlette_client/apps.py,sha256=Cbk_SiNLIr5RM_rIuNn3jdd2zYKTADO6jhOgb73484I,3328
+authlib/integrations/starlette_client/integration.py,sha256=LKR4HdZl1PVTqrCQsDMPBtq39_RQxmpBTqiZn_9Duxs,1974
+authlib/jose/__init__.py,sha256=qpIwbdODthy50cit_FeHECvwRGd7pIABiYEA4aiFV48,1399
authlib/jose/errors.py,sha256=HeX2ezB4dS5qdlIHro9liIoHbhS2IAo4huQMZickcIc,3224
authlib/jose/jwk.py,sha256=ifeKlnLs6XA56y_BxXG8dt76_6RoNjrvcLvQY9PkMHg,388
authlib/jose/util.py,sha256=2krDZtJunNHXHMSi85A30pceMUhW_wI9l9kX2VDpdkM,1097
@@ -67,10 +67,10 @@ authlib/jose/drafts/_jwe_algorithms.py,sha256=8PFO2kbRsRM8IUP3gfPUtvXPddoMFLSfeU
authlib/jose/drafts/_jwe_enc_cryptodome.py,sha256=a4Vb0AUZWZWlCoTKqOfBaLZ-o1D1bgS0hKuBKJT7Kqo,1860
authlib/jose/drafts/_jwe_enc_cryptography.py,sha256=N2Bm9zp7MMSe_kbPwjyUAyD3MMOTj5BmpEUc1k_IqUw,1743
authlib/jose/rfc7515/__init__.py,sha256=0NhWGkry69LiJH6cAkwIUNmQUpuGh463TNwIpoQjtE4,360
-authlib/jose/rfc7515/jws.py,sha256=9lJ326BsAKyV-WhJPp1SMx6iy4oCNYK1CgIqyrh6AcI,11254
+authlib/jose/rfc7515/jws.py,sha256=v6NJcLciOVZ_BbCyCijGwgCij9f4JPV_Osw8US_tmaM,11282
authlib/jose/rfc7515/models.py,sha256=JPUPg7pHW-_aztpfX517y6SWBZI5_AfrNxUxwUhrilM,2483
authlib/jose/rfc7516/__init__.py,sha256=SCAxvSIWD0NF2_Gcq1BrIkKx3Bqr_6WYhFpDFt3AQ6A,465
-authlib/jose/rfc7516/jwe.py,sha256=gj4FmhCTmMCJF28x5aRgXXBvZQyRJmsSzkZCEf8aI2g,29670
+authlib/jose/rfc7516/jwe.py,sha256=cvqhOpwx0SFD_eKYlyIbSQu8cU2gzww_ibPPpSDvYuA,29722
authlib/jose/rfc7516/models.py,sha256=1xLEfSEb_OyL1J4pmLOGGs5dOtsdJI5BZcyHoxPPAG8,4401
authlib/jose/rfc7517/__init__.py,sha256=LfowmYyTdC0t5wB6ptJs45Qkj-6nRmHmhRONAh-UFxY,424
authlib/jose/rfc7517/_cryptography_key.py,sha256=1-EQ1YD7ZR7Gp7FBntrWEN-76Su_vlunuzC77VPJ_sg,1257
@@ -89,7 +89,7 @@ authlib/jose/rfc7518/rsa_key.py,sha256=hxCJAs-Ljl_RRv6D5ezAhQCpjwYhp2OU3zXtCqfO_
authlib/jose/rfc7518/util.py,sha256=LpOgX10QHuqss6x015QPgApTlnYJ_cQyd0hzeYALnaE,265
authlib/jose/rfc7519/__init__.py,sha256=CORkKBZ135xSAR-wQJob9P5EfdmyRkJ58MM6EOGvCAE,333
authlib/jose/rfc7519/claims.py,sha256=JeGQu3PK3y62psFmTPIKzYdwITjYGU8XlcUssloVnxw,8423
-authlib/jose/rfc7519/jwt.py,sha256=1eGM98bxLHjsaporey2j2ujPOdodpLK_f8eAjmJFeq8,5740
+authlib/jose/rfc7519/jwt.py,sha256=c3jjVyFjEKC3rb97cV5o-V8vdJhZWvFB_zZYD_7EJZI,5735
authlib/jose/rfc8037/__init__.py,sha256=MV25hs0RY6HU0pE5UKB2hmRI0Avv-V8BaPtNxIshh0A,119
authlib/jose/rfc8037/jws_eddsa.py,sha256=dpg6ZKOdpqGcp582mP5yqsRLlnC81y_Mnl3xL0_tgLQ,716
authlib/jose/rfc8037/okp_key.py,sha256=3JzYo1_uUEsngtx8nsRCQqjwSEmBhb_KUaflq0sVsR8,3568
@@ -111,19 +111,19 @@ authlib/oauth1/rfc5849/wrapper.py,sha256=VdmE-XTIXLLF1aweeqeLBHSIsNLwkfplmiU7WyH
authlib/oauth2/__init__.py,sha256=QbT0eXEAwNUr9RbRGRHIw6kw-pUnFXbfcbZJZ5_ynmc,423
authlib/oauth2/auth.py,sha256=pL2FQ3go6R8l54pFPSL5KMdXzJc6wigR84iNqYMvu7Y,3473
authlib/oauth2/base.py,sha256=jizTGyMIx5lVS3R-kIJolYh0lZRo4MfldC9aTBk-v54,1009
-authlib/oauth2/client.py,sha256=jtXdPjBRZnox95iGd0kVnOum_8zOvEz00jgqmfmsjCg,17315
+authlib/oauth2/client.py,sha256=o27iAv4x8ikfvM5P2HQDQwqdea6gCN9MQeNYNveKyG0,17382
authlib/oauth2/rfc6749/__init__.py,sha256=KcyW3CtI9Ocw0U5Opjmf_8gXrJPB5G0IqZ0ngTRca1E,2322
authlib/oauth2/rfc6749/authenticate_client.py,sha256=xRQDiVXJSj-gqtsMEhBNhJtVYxMKJyfB1dfsokv9tro,3756
-authlib/oauth2/rfc6749/authorization_server.py,sha256=xWQv-8Pg1dBnBhxu_IIbBQCramjqZXP8mfYCipnkoe8,11419
+authlib/oauth2/rfc6749/authorization_server.py,sha256=9GHN3x2Z2fNfoTR3d0PZWr38mXL0U0nnOgPBsBo7iB4,11425
authlib/oauth2/rfc6749/errors.py,sha256=zzJhjlUvaygoFVvew9A3UujKc-3q99HBWCBfWV_Sjaw,7540
authlib/oauth2/rfc6749/models.py,sha256=7m_LfEYzI_iAvLibVUoKR4XbdAnTNt9A6s0-eWP4Jy0,7527
-authlib/oauth2/rfc6749/parameters.py,sha256=YCDcu9BammKPLEM5cOoZ0fwF2pTl9lpYYMC97ZUwxQM,8270
+authlib/oauth2/rfc6749/parameters.py,sha256=kP4R8OFQRuNOdrTW1SGYP9tx1t8yzfYxr2agZL7-JL8,8296
authlib/oauth2/rfc6749/resource_protector.py,sha256=qF_tYZH9qAdVAHYl7q1TgrzDHmZIv1nkk8kdvgHFtP0,5305
authlib/oauth2/rfc6749/token_endpoint.py,sha256=AjrHbGkenvLPzHrcFCGqrJA2rK7dtYTYmNErTZxGTY0,1111
authlib/oauth2/rfc6749/util.py,sha256=xzebTUJciyJ9qy1jrYqiXfNBq6GfqCkb9Ok0XMoPWFc,1122
authlib/oauth2/rfc6749/wrappers.py,sha256=UUs6JXokaIpGv4AUA7JpIMXHIou08moAt4qWPo3wJKQ,2864
authlib/oauth2/rfc6749/grants/__init__.py,sha256=jJZOtFgyBztuIGQxcuK1qtvnR3hWRDU-G59RuyWmqKI,1314
-authlib/oauth2/rfc6749/grants/authorization_code.py,sha256=2NMrpvJ1PrBM-ybjizyeP1FMUcZ1_0qvACGS6PZgtlM,15335
+authlib/oauth2/rfc6749/grants/authorization_code.py,sha256=ohDFsAWwlsjYYkXkMWz9eed4tLMOKRaeNjlMmrppbY8,15352
authlib/oauth2/rfc6749/grants/base.py,sha256=VeyHcWsHFxBQMSDe79bWl5txYfu-cZmtObFACcrWKAY,5054
authlib/oauth2/rfc6749/grants/client_credentials.py,sha256=pf3tfaiSVeuCudaqZGKpFU1OVBWkSOTB8SErEjJQWvY,3924
authlib/oauth2/rfc6749/grants/implicit.py,sha256=qNBYKp8GG3sNLZSfC1VL6xRiloTXDl3c1qPXsGf3XF8,9297
@@ -138,7 +138,7 @@ authlib/oauth2/rfc7009/__init__.py,sha256=P0aYdtZ-B5Nj8mUkEqS-snMvJ8hLTDR5unZKAZ
authlib/oauth2/rfc7009/parameters.py,sha256=klTaHudte5Oncfw6M5Mr6LL9Y-cVnN29Th1ix-uVYAU,854
authlib/oauth2/rfc7009/revocation.py,sha256=OOW6beRAnGCCeQ3frQdzdiO7paHHrTF_oPyO1ga3S5M,3942
authlib/oauth2/rfc7521/__init__.py,sha256=sI-EfGOAZTLM-LxfBfYEXU_74cd3ib63g8fkGu39PJA,67
-authlib/oauth2/rfc7521/client.py,sha256=6zwwlR8ZzEnYSejJnDiShJU9l4S_qPzipOba9h6A2Jg,2513
+authlib/oauth2/rfc7521/client.py,sha256=1PrWuGraLfzCVL0cpZLnvVFdfcHUT2hkE6-dbrraiCs,2481
authlib/oauth2/rfc7523/__init__.py,sha256=RRj26fRGj1KUc7ojMKcWQvCJtKhSxOGcz7I6PZOGULU,876
authlib/oauth2/rfc7523/assertion.py,sha256=ZFklvOm9ulLdUCoWn245igaK4LjXsFIJn5GcWJRl7iU,2024
authlib/oauth2/rfc7523/auth.py,sha256=V7tVFzcxMV4JEoA9gRbdgpIufPcyORhZMy0v0DjfJiA,3071
@@ -181,8 +181,8 @@ authlib/oidc/core/grants/util.py,sha256=0Zmyd_ofSrzAyJYf7dxtuQ7wcx2shkha4aDIIIeo
authlib/oidc/discovery/__init__.py,sha256=sI40mT-HXoRPqxAE5UfPg-r3xa_wrQZ8jIuN5n5nm70,321
authlib/oidc/discovery/models.py,sha256=dcb7fprftGNQtlDKOBUxTf3fVtDj8CpmocBM1PjtRBc,12611
authlib/oidc/discovery/well_known.py,sha256=3VmfTsVReChVVxBuN1eoL7fIRHL0-tN0aXH2XVKeiDM,574
-Authlib-1.0.1.dist-info/LICENSE,sha256=jhtIUY3pxs0Ay0jH_luAI_2Q1VUsoS6-c2Kg3zDdvkU,1514
-Authlib-1.0.1.dist-info/METADATA,sha256=FR7josUyNb-jGTgD4TNA9u9malHm3jQcsxdtST4hO28,3724
-Authlib-1.0.1.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
-Authlib-1.0.1.dist-info/top_level.txt,sha256=Rj3mJn0jhRuCs6x7ysI6hYE2PePbuxey6y6jswadAEY,8
-Authlib-1.0.1.dist-info/RECORD,,
+Authlib-1.1.0.dist-info/LICENSE,sha256=jhtIUY3pxs0Ay0jH_luAI_2Q1VUsoS6-c2Kg3zDdvkU,1514
+Authlib-1.1.0.dist-info/METADATA,sha256=izBKb9owdKftdDdehQRdApeA5dWbZR6JGhKEPbduZCk,3722
+Authlib-1.1.0.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
+Authlib-1.1.0.dist-info/top_level.txt,sha256=Rj3mJn0jhRuCs6x7ysI6hYE2PePbuxey6y6jswadAEY,8
+Authlib-1.1.0.dist-info/RECORD,,
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/WHEEL b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/WHEEL
similarity index 100%
rename from /Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/WHEEL
rename to /Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/WHEEL
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/top_level.txt b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/top_level.txt
similarity index 100%
rename from /Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/Authlib-1.0.1.dist-info/top_level.txt
rename to /Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/Authlib-1.1.0.dist-info/top_level.txt
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/consts.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/consts.py
index 2a69e55..d72f6a8 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/consts.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/consts.py
@@ -1,5 +1,5 @@
name = 'Authlib'
-version = '1.0.1'
+version = '1.1.0'
author = 'Hsiaoming Yang <[email protected]>'
homepage = 'https://authlib.org/'
default_user_agent = '{}/{} (+{})'.format(name, version, homepage)
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/django_client/apps.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/django_client/apps.py
index 4e23e8c..dbf3a22 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/django_client/apps.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/django_client/apps.py
@@ -75,12 +75,13 @@ class DjangoOAuth2App(DjangoAppMixin, OAuth2Mixin, OpenIDMixin, BaseApp):
'state': request.POST.get('state'),
}
+ claims_options = kwargs.pop('claims_options', None)
state_data = self.framework.get_state_data(request.session, params.get('state'))
self.framework.clear_state_data(request.session, params.get('state'))
params = self._format_state_params(state_data, params)
token = self.fetch_access_token(**params, **kwargs)
if 'id_token' in token and 'nonce' in state_data:
- userinfo = self.parse_id_token(token, nonce=state_data['nonce'])
+ userinfo = self.parse_id_token(token, nonce=state_data['nonce'], claims_options=claims_options)
token['userinfo'] = userinfo
return token
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/flask_client/apps.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/flask_client/apps.py
index 89a5893..4235203 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/flask_client/apps.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/flask_client/apps.py
@@ -97,6 +97,7 @@ class FlaskOAuth2App(FlaskAppMixin, OAuth2Mixin, OpenIDMixin, BaseApp):
'state': request.form.get('state'),
}
+ claims_options = kwargs.pop('claims_options', None)
state_data = self.framework.get_state_data(session, params.get('state'))
self.framework.clear_state_data(session, params.get('state'))
params = self._format_state_params(state_data, params)
@@ -104,6 +105,6 @@ class FlaskOAuth2App(FlaskAppMixin, OAuth2Mixin, OpenIDMixin, BaseApp):
self.token = token
if 'id_token' in token and 'nonce' in state_data:
- userinfo = self.parse_id_token(token, nonce=state_data['nonce'])
+ userinfo = self.parse_id_token(token, nonce=state_data['nonce'], claims_options=claims_options)
token['userinfo'] = userinfo
return token
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/httpx_client/assertion_client.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/httpx_client/assertion_client.py
index dd5baf7..4832850 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/httpx_client/assertion_client.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/httpx_client/assertion_client.py
@@ -43,7 +43,6 @@ class AsyncAssertionClient(_AssertionClient, AsyncClient):
resp = await self.request(
'POST', self.token_endpoint, data=data, withhold_token=True)
- resp.raise_for_status()
token = resp.json()
if 'error' in token:
raise OAuth2Error(
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/httpx_client/oauth1_client.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/httpx_client/oauth1_client.py
index 7f248cb..c123686 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/httpx_client/oauth1_client.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/httpx_client/oauth1_client.py
@@ -7,7 +7,7 @@ from authlib.oauth1 import (
from authlib.common.encoding import to_unicode
from authlib.oauth1 import ClientAuth
from authlib.oauth1.client import OAuth1Client as _OAuth1Client
-from .utils import extract_client_kwargs
+from .utils import build_request, extract_client_kwargs
from ..base_client import OAuthError
@@ -19,7 +19,7 @@ class OAuth1Auth(Auth, ClientAuth):
url, headers, body = self.prepare(
request.method, str(request.url), request.headers, request.content)
headers['Content-Length'] = str(len(body))
- yield Request(method=request.method, url=url, headers=headers, content=body)
+ yield build_request(url=url, headers=headers, body=body, initial_request=request)
class AsyncOAuth1Client(_OAuth1Client, AsyncClient):
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/httpx_client/oauth2_client.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/httpx_client/oauth2_client.py
index 932aaf6..9a44167 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/httpx_client/oauth2_client.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/httpx_client/oauth2_client.py
@@ -1,4 +1,5 @@
import typing
+from contextlib import asynccontextmanager
from httpx import AsyncClient, Auth, Client, Request, Response, USE_CLIENT_DEFAULT
from anyio import Lock # Import after httpx so import errors refer to httpx
@@ -91,6 +92,7 @@ class AsyncOAuth2Client(_OAuth2Client, AsyncClient):
return await super(AsyncOAuth2Client, self).request(
method, url, auth=auth, **kwargs)
+ @asynccontextmanager
async def stream(self, method, url, withhold_token=False, auth=USE_CLIENT_DEFAULT, **kwargs):
if not withhold_token and auth is USE_CLIENT_DEFAULT:
if not self.token:
@@ -100,8 +102,9 @@ class AsyncOAuth2Client(_OAuth2Client, AsyncClient):
auth = self.token_auth
- return super(AsyncOAuth2Client, self).stream(
- method, url, auth=auth, **kwargs)
+ async with super(AsyncOAuth2Client, self).stream(
+ method, url, auth=auth, **kwargs) as resp:
+ yield resp
async def ensure_active_token(self, token):
async with self._token_refresh_lock:
@@ -134,7 +137,6 @@ class AsyncOAuth2Client(_OAuth2Client, AsyncClient):
for hook in self.compliance_hook['access_token_response']:
resp = hook(resp)
- resp.raise_for_status()
return self.parse_response_token(resp.json())
async def _refresh_token(self, url, refresh_token=None, body='',
@@ -146,7 +148,6 @@ class AsyncOAuth2Client(_OAuth2Client, AsyncClient):
for hook in self.compliance_hook['refresh_token_response']:
resp = hook(resp)
- resp.raise_for_status()
token = self.parse_response_token(resp.json())
if 'refresh_token' not in token:
self.token['refresh_token'] = refresh_token
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/requests_client/oauth2_session.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/requests_client/oauth2_session.py
index c4b13c0..620c39e 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/requests_client/oauth2_session.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/requests_client/oauth2_session.py
@@ -56,6 +56,7 @@ class OAuth2Session(OAuth2Client, Session):
:param revocation_endpoint_auth_method: client authentication method for
revocation endpoint.
:param scope: Scope that you needed to access user resources.
+ :param state: Shared secret to prevent CSRF attack.
:param redirect_uri: Redirect URI you registered as callback.
:param token: A dict of token attributes such as ``access_token``,
``token_type`` and ``expires_at``.
@@ -74,7 +75,7 @@ class OAuth2Session(OAuth2Client, Session):
def __init__(self, client_id=None, client_secret=None,
token_endpoint_auth_method=None,
revocation_endpoint_auth_method=None,
- scope=None, redirect_uri=None,
+ scope=None, state=None, redirect_uri=None,
token=None, token_placement='header',
update_token=None, **kwargs):
@@ -86,7 +87,7 @@ class OAuth2Session(OAuth2Client, Session):
client_id=client_id, client_secret=client_secret,
token_endpoint_auth_method=token_endpoint_auth_method,
revocation_endpoint_auth_method=revocation_endpoint_auth_method,
- scope=scope, redirect_uri=redirect_uri,
+ scope=scope, state=state, redirect_uri=redirect_uri,
token=token, token_placement=token_placement,
update_token=update_token, **kwargs
)
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/starlette_client/apps.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/starlette_client/apps.py
index 5b0f435..f41454f 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/starlette_client/apps.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/starlette_client/apps.py
@@ -21,7 +21,7 @@ class StarletteAppMixin(object):
async def authorize_redirect(self, request, redirect_uri=None, **kwargs):
"""Create a HTTP Redirect for Authorization Endpoint.
- :param request: HTTP request instance from Django view.
+ :param request: HTTP request instance from Starlette view.
:param redirect_uri: Callback or redirect URI for authorization.
:param kwargs: Extra parameters to include.
:return: A HTTP redirect response.
@@ -69,12 +69,13 @@ class StarletteOAuth2App(StarletteAppMixin, AsyncOAuth2Mixin, AsyncOpenIDMixin,
else:
session = request.session
+ claims_options = kwargs.pop('claims_options', None)
state_data = await self.framework.get_state_data(session, params.get('state'))
await self.framework.clear_state_data(session, params.get('state'))
params = self._format_state_params(state_data, params)
token = await self.fetch_access_token(**params, **kwargs)
if 'id_token' in token and 'nonce' in state_data:
- userinfo = await self.parse_id_token(token, nonce=state_data['nonce'])
+ userinfo = await self.parse_id_token(token, nonce=state_data['nonce'], claims_options=claims_options)
token['userinfo'] = userinfo
return token
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/starlette_client/integration.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/starlette_client/integration.py
index 22c1db1..afe789b 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/integrations/starlette_client/integration.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/integrations/starlette_client/integration.py
@@ -36,7 +36,7 @@ class StarletteIntegration(FrameworkIntegration):
async def set_state_data(self, session: Optional[Dict[str, Any]], state: str, data: Any):
key = f'_state_{self.name}_{state}'
if self.cache:
- await self.cache.set(key, {'data': data}, self.expires_in)
+ await self.cache.set(key, json.dumps({'data': data}), self.expires_in)
elif session is not None:
now = time.time()
session[key] = {'data': data, 'exp': now + self.expires_in}
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/jose/__init__.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/jose/__init__.py
index 1d096fe..2d6638a 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/jose/__init__.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/jose/__init__.py
@@ -42,7 +42,7 @@ JsonWebKey.JWK_KEY_CLS = {
OKPKey.kty: OKPKey,
}
-jwt = JsonWebToken()
+jwt = JsonWebToken(list(JsonWebSignature.ALGORITHMS_REGISTRY.keys()))
__all__ = [
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/jose/rfc7515/jws.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/jose/rfc7515/jws.py
index 1248c95..faaa740 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/jose/rfc7515/jws.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/jose/rfc7515/jws.py
@@ -244,7 +244,7 @@ class JsonWebSignature(object):
raise MissingAlgorithmError()
alg = header['alg']
- if self._algorithms and alg not in self._algorithms:
+ if self._algorithms is not None and alg not in self._algorithms:
raise UnsupportedAlgorithmError()
if alg not in self.ALGORITHMS_REGISTRY:
raise UnsupportedAlgorithmError()
@@ -252,7 +252,7 @@ class JsonWebSignature(object):
algorithm = self.ALGORITHMS_REGISTRY[alg]
if callable(key):
key = key(header, payload)
- elif 'jwk' in header:
+ elif key is None and 'jwk' in header:
key = header['jwk']
key = algorithm.prepare_key(key)
return algorithm, key
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/jose/rfc7516/jwe.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/jose/rfc7516/jwe.py
index 0de8ea4..f5e82f4 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/jose/rfc7516/jwe.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/jose/rfc7516/jwe.py
@@ -662,7 +662,7 @@ class JsonWebEncryption(object):
raise MissingAlgorithmError()
alg = header['alg']
- if self._algorithms and alg not in self._algorithms:
+ if self._algorithms is not None and alg not in self._algorithms:
raise UnsupportedAlgorithmError()
if alg not in self.ALG_REGISTRY:
raise UnsupportedAlgorithmError()
@@ -672,7 +672,7 @@ class JsonWebEncryption(object):
if 'enc' not in header:
raise MissingEncryptionAlgorithmError()
enc = header['enc']
- if self._algorithms and enc not in self._algorithms:
+ if self._algorithms is not None and enc not in self._algorithms:
raise UnsupportedEncryptionAlgorithmError()
if enc not in self.ENC_REGISTRY:
raise UnsupportedEncryptionAlgorithmError()
@@ -681,7 +681,7 @@ class JsonWebEncryption(object):
def get_header_zip(self, header):
if 'zip' in header:
z = header['zip']
- if self._algorithms and z not in self._algorithms:
+ if self._algorithms is not None and z not in self._algorithms:
raise UnsupportedCompressionAlgorithmError()
if z not in self.ZIP_REGISTRY:
raise UnsupportedCompressionAlgorithmError()
@@ -717,6 +717,6 @@ class JsonWebEncryption(object):
def prepare_key(alg, header, key):
if callable(key):
key = key(header, None)
- elif 'jwk' in header:
+ elif key is None and 'jwk' in header:
key = header['jwk']
return alg.prepare_key(key)
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/jose/rfc7519/jwt.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/jose/rfc7519/jwt.py
index 1866c4e..58a6f7c 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/jose/rfc7519/jwt.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/jose/rfc7519/jwt.py
@@ -25,7 +25,7 @@ class JsonWebToken(object):
r'^\b(?!(000|666|9))\d{3}-(?!00)\d{2}-(?!0000)\d{4}\b',
]), re.DOTALL)
- def __init__(self, algorithms=None, private_headers=None):
+ def __init__(self, algorithms, private_headers=None):
self._jws = JsonWebSignature(algorithms, private_headers=private_headers)
self._jwe = JsonWebEncryption(algorithms, private_headers=private_headers)
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/client.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/client.py
index cf2cc8a..35032d1 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/client.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/client.py
@@ -28,6 +28,7 @@ class OAuth2Client(object):
:param revocation_endpoint_auth_method: client authentication method for
revocation endpoint.
:param scope: Scope that you needed to access user resources.
+ :param state: Shared secret to prevent CSRF attack.
:param redirect_uri: Redirect URI you registered as callback.
:param code_challenge_method: PKCE method name, only S256 is supported.
:param token: A dict of token attributes such as ``access_token``,
@@ -48,12 +49,13 @@ class OAuth2Client(object):
def __init__(self, session, client_id=None, client_secret=None,
token_endpoint_auth_method=None,
revocation_endpoint_auth_method=None,
- scope=None, redirect_uri=None, code_challenge_method=None,
+ scope=None, state=None, redirect_uri=None, code_challenge_method=None,
token=None, token_placement='header', update_token=None, **metadata):
self.session = session
self.client_id = client_id
self.client_secret = client_secret
+ self.state = state
if token_endpoint_auth_method is None:
if client_secret:
@@ -170,6 +172,7 @@ class OAuth2Client(object):
:param grant_type: Use specified grant_type to fetch token
:return: A :class:`OAuth2Token` object (a dict too).
"""
+ state = state or self.state
# implicit grant_type
authorization_response = kwargs.pop('authorization_response', None)
if authorization_response and '#' in authorization_response:
@@ -350,7 +353,6 @@ class OAuth2Client(object):
for hook in self.compliance_hook['access_token_response']:
resp = hook(resp)
- resp.raise_for_status()
return self.parse_response_token(resp.json())
def _refresh_token(self, url, refresh_token=None, body='', headers=None,
@@ -360,7 +362,6 @@ class OAuth2Client(object):
for hook in self.compliance_hook['refresh_token_response']:
resp = hook(resp)
- resp.raise_for_status()
token = self.parse_response_token(resp.json())
if 'refresh_token' not in token:
self.token['refresh_token'] = refresh_token
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/rfc6749/authorization_server.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/rfc6749/authorization_server.py
index c0e8d7e..1de93bb 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/rfc6749/authorization_server.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/rfc6749/authorization_server.py
@@ -60,7 +60,7 @@ class AuthorizationServer(object):
def register_token_generator(self, grant_type, func):
"""Register a function as token generator for the given ``grant_type``.
Developers MUST register a default token generator with a special
- ``grant_type=none``::
+ ``grant_type=default``::
def generate_bearer_token(grant_type, client, user=None, scope=None,
expires_in=None, include_refresh_token=True):
@@ -70,7 +70,7 @@ class AuthorizationServer(object):
...
return token
- authorization_server.register_token_generator('none', generate_bearer_token)
+ authorization_server.register_token_generator('default', generate_bearer_token)
If you register a generator for a certain grant type, that generator will only works
for the given grant type::
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/rfc6749/grants/authorization_code.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/rfc6749/grants/authorization_code.py
index 570ebf2..436588f 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/rfc6749/grants/authorization_code.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/rfc6749/grants/authorization_code.py
@@ -6,6 +6,7 @@ from ..errors import (
OAuth2Error,
UnauthorizedClientError,
InvalidClientError,
+ InvalidGrantError,
InvalidRequestError,
AccessDeniedError,
)
@@ -220,14 +221,14 @@ class AuthorizationCodeGrant(BaseGrant, AuthorizationEndpointMixin, TokenEndpoin
# code was issued to "client_id" in the request
authorization_code = self.query_authorization_code(code, client)
if not authorization_code:
- raise InvalidRequestError('Invalid "code" in request.')
+ raise InvalidGrantError('Invalid "code" in request.')
# validate redirect_uri parameter
log.debug('Validate token redirect_uri of %r', client)
redirect_uri = self.request.redirect_uri
original_redirect_uri = authorization_code.get_redirect_uri()
if original_redirect_uri and redirect_uri != original_redirect_uri:
- raise InvalidRequestError('Invalid "redirect_uri" in request.')
+ raise InvalidGrantError('Invalid "redirect_uri" in request.')
# save for create_token_response
self.request.client = client
@@ -267,7 +268,7 @@ class AuthorizationCodeGrant(BaseGrant, AuthorizationEndpointMixin, TokenEndpoin
user = self.authenticate_user(authorization_code)
if not user:
- raise InvalidRequestError('There is no "user" for this code.')
+ raise InvalidGrantError('There is no "user" for this code.')
self.request.user = user
scope = authorization_code.get_scope()
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/rfc6749/parameters.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/rfc6749/parameters.py
index 20461fd..4ffdb1d 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/rfc6749/parameters.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/rfc6749/parameters.py
@@ -151,7 +151,8 @@ def parse_authorization_code_response(uri, state=None):
if 'code' not in params:
raise MissingCodeException()
- if state and params.get('state', None) != state:
+ params_state = params.get('state')
+ if state and params_state != state:
raise MismatchingStateException()
return params
diff --git a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/rfc7521/client.py b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/rfc7521/client.py
index 4c5e5d6..d1b98ba 100644
--- a/Users/chainz/Downloads/Authlib-1.0.1-py2.py3-none-any/authlib/oauth2/rfc7521/client.py
+++ b/Users/chainz/Downloads/Authlib-1.1.0-py2.py3-none-any/authlib/oauth2/rfc7521/client.py
@@ -73,7 +73,6 @@ class AssertionClient(object):
resp = self.session.request(
'POST', self.token_endpoint, data=data, withhold_token=True)
- resp.raise_for_status()
token = resp.json()
if 'error' in token:
raise OAuth2Error(
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment