Releases: jazzband/django-oauth-toolkit
Release 3.0.1
Release 3.0.0
Release 3.0.0
WARNING - POTENTIAL BREAKING CHANGES
- Changes to the
AbstractAccessToken
model require doing amanage.py migrate
after upgrading. - If you use swappable models you will need to make sure your custom models are also updated (usually
manage.py makemigrations
). - Old Django versions below 4.2 are no longer supported.
- A few deprecations warned about in 2.4.0 (#1345) have been removed. See below.
Added
- #1366 Add Docker containerized apps for testing IDP and RP.
- #1454 Added compatibility with
LoginRequiredMiddleware
introduced in Django 5.1.
Changed
- Many documentation and project internals improvements.
- #1446 Use generic models
pk
instead ofid
. This enables, for example, custom swapped models to have a different primary key field. - #1447 Update token to TextField from CharField. Removing the 255 character limit enables supporting JWT tokens with additional claims.
This adds a SHA-256token_checksum
field that is used to validate tokens. - #1450 Transactions wrapping writes of the Tokens now rely on Django's database routers to determine the correct
database to use instead of assuming that 'default' is the correct one. - #1455 Changed minimum supported Django version to >=4.2.
Removed
- #1425 Remove deprecated
RedirectURIValidator
,WildcardSet
per #1345;validate_logout_request
per #1274
Fixed
- #1444, #1476 Fix several 500 errors to instead raise appropriate errors.
- #1469 Fix
ui_locales
request parameter triggersAttributeError
under certain circumstances
Security
- #1452 Add a new setting
REFRESH_TOKEN_REUSE_PROTECTION
.
In combination withROTATE_REFRESH_TOKEN
,
this prevents refresh tokens from being used more than once. See more at
OAuth 2.0 Security Best Current Practice - #1481 Bump oauthlib version required to 3.2.2 and above to address CVE-2022-36087.
Release 2.4.0
[2.4.0] - 2024-05-13
WARNING
Issues caused by Release 2.0.0 breaking changes continue to be logged. Please make sure to carefully read these release notes before
performing a MAJOR upgrade to 2.x.
These issues both result in {"error": "invalid_client"}
:
-
The application client secret is now hashed upon save. You must copy it before it is saved. Using the hashed value will fail.
-
PKCE_REQUIRED
is nowTrue
by default. You should use PKCE with your client or setPKCE_REQUIRED=False
if you are unable to fix the client.
If you are going to revert migration 0006 make note that previously hashed client_secret cannot be reverted!
Added
- #1304 Add
OAuth2ExtraTokenMiddleware
for adding access token to request.
See Setup a provider in the Tutorial. - #1273 Performance improvement: Add caching of loading of OIDC private key.
- #1285 Add
post_logout_redirect_uris
field in the Application Registration form - #1311,#1334 (Security) Add option to disable client_secret hashing to allow verifying JWTs' signatures when using
HS256 keys.
This means your client secret will be stored in cleartext but is the only way to successfully use HS256 signed JWT's. - #1350 Support Python 3.12 and Django 5.0
- #1367 Add
code_challenge_methods_supported
property to auto discovery information, per RFC 8414 section 2 - #1328 Adds the ability to define how to store a user profile.
Fixed
- #1292 Interpret
EXP
in AccessToken always as UTC instead of (possibly) local timezone.
Use settingAUTHENTICATION_SERVER_EXP_TIME_ZONE
to enable different time zone in case the remote
authentication server does not provide EXP in UTC. - #1323 Fix instructions in documentation
on how to create a code challenge and code verifier - #1284 Fix a 500 error when trying to logout with no id_token_hint even if the browser session already expired.
- #1296 Added reverse function in migration
0006_alter_application_client_secret
. Note that reversing this migration cannot undo a hashedclient_secret
. - #1345 Fix encapsulation for Redirect URI scheme validation. Deprecates
RedirectURIValidator
in favor ofAllowedURIValidator
. - #1357 Move import of setting_changed signal from test to django core modules.
- #1361 Fix prompt=none redirects to login screen
- #1380 Fix AttributeError in OAuth2ExtraTokenMiddleware when a custom AccessToken model is used.
- #1288 Fix #1276 which attempted to resolve #1092 for requests that don't have a client_secret per RFC 6749 4.1.1
- #1337 Gracefully handle expired or deleted refresh tokens, in
validate_user
. - Various documentation improvements: #1410, #1408, #1405, #1399, #1401, #1396, #1375, #1162, #1315, #1307
Removed
- #1350 Remove support for Python 3.7 and Django 2.2
Release 2.3.0
[2.3.0] 2023-05-31
WARNING
Issues caused by Release 2.0.0 breaking changes continue to be logged. Please make sure to carefully read these release notes before
performing a MAJOR upgrade to 2.x.
These issues both result in {"error": "invalid_client"}
:
-
The application client secret is now hashed upon save. You must copy it before it is saved. Using the hashed value will fail.
-
PKCE_REQUIRED
is nowTrue
by default. You should use PKCE with your client or setPKCE_REQUIRED=False
if you are unable to fix the client.
Added
- Add Japanese(日本語) Language Support
- #1244 implement OIDC RP-Initiated Logout
- #1092 Allow Authorization Code flow without a client_secret per RFC 6749 2.3.1
Changed
Release 2.2.0
[2.2.0] 2022-10-18
WARNING
Issues caused by Release 2.0.0 breaking changes continue to be logged. Please make sure to carefully read these release notes before
performing a MAJOR upgrade to 2.x.
These issues both result in {"error": "invalid_client"}
:
-
The application client secret is now hashed upon save. You must copy it before it is saved. Using the hashed value will fail.
-
PKCE_REQUIRED
is nowTrue
by default. You should use PKCE with your client or setPKCE_REQUIRED=False
if you are unable to fix the client.
Added
- #1208 Add 'code_challenge_method' parameter to authorization call in documentation
- #1182 Add 'code_verifier' parameter to token requests in documentation
Changed
- #1203 Support Django 4.1.
Fixed
Release 2.1.0
WARNING
Issues caused by Release 2.0.0 breaking changes continue to be logged. Please make sure to carefully read these release notes before
performing a MAJOR upgrade to 2.x.
These issues both result in {"error": "invalid_client"}
:
-
The application client secret is now hashed upon save. You must copy it before it is saved. Using the hashed value will fail.
-
PKCE_REQUIRED
is nowTrue
by default. You should use PKCE with your client or setPKCE_REQUIRED=False
if you are unable to fix the client.
Added
- #1164 Support
prompt=login
for the OIDC Authorization Code Flow end user Authentication Request. - #1163 Add French (fr) translations.
- #1166 Add Spanish (es) translations.
Changed
- #1152
createapplication
management command enhanced to display an auto-generated secret before it gets hashed. - #1172, #1159, #1158 documentation improvements.
Fixed
Release 2.0.0
What's Changed
- WIP: Hash application client secrets using Django password hashing by @n2ygk in #1093
- OIDC: Add "scopes_supported" to openid-configuration. by @n2ygk in #1106
- OIDC: Standard scopes to determine which claims are returned by @n2ygk in #1108
- Prevent the tests/migrations directory from getting packaged by @brianhelba in #1118
- Topic/1112 by @daffyd in #1113
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1109
- Fix broken import in doc by @CarlSchwan in #1121
- Security BCP: Remove OOB by @n2ygk in #1124
- Revert 1070 (Celery tasks.py) by @n2ygk in #1126
- Pin Jinja2 version per sphinx-doc/sphinx#10291 by @n2ygk in #1134
- Missed updating master branch version to 1.7.1 by @n2ygk in #1133
- Update
createapplication
command by @vector-kerr in #1132 - Add tutorial for Celery task setup. by @n2ygk in #1128
- chore: .gitignore local development files by @dopry in #1137
- feat: Update PKCE_REQUIRED to true by default by @dopry in #1129
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1139
- sphinx-lint by @JulienPalard in #1142
- Corrections to resource server documentation by @n2ygk in #1136
- Add help wanted to the README by @n2ygk in #1144
- Release 2.0.0 by @n2ygk in #1145
New Contributors
- @brianhelba made their first contribution in #1118
- @daffyd made their first contribution in #1113
- @CarlSchwan made their first contribution in #1121
- @vector-kerr made their first contribution in #1132
- @dopry made their first contribution in #1137
- @JulienPalard made their first contribution in #1142
Full Changelog: 1.7.0...2.0.0
Release 1.7.0
[1.7.0] 2022-01-23
Added
- #969 Add batching of expired token deletions in
cleartokens
management command andmodels.clear_expired()
to improve performance for removal of large numers of expired tokens. Configure with
CLEAR_EXPIRED_TOKENS_BATCH_SIZE
and
CLEAR_EXPIRED_TOKENS_BATCH_INTERVAL
. - #1070 Add a Celery task for clearing expired tokens, e.g. to be scheduled as a periodic task.
- #1062 Add Brazilian Portuguese (pt-BR) translations.
- #1069 OIDC: Add an alternate form of
get_additional_claims()
which makes the list of additionalclaims_supported
available at the OIDC auto-discovery endpoint (.well-known/openid-configuration
).
Fixed
Release 1.6.3
Release 1.6.2
[1.6.2] 2022-01-06
NOTE: This release reverts an inadvertently-added breaking change.
Fixed
- #1056 Add missing migration triggered by Django 4.0 changes to the migrations autodetector.
- #1068 Revert #967 which incorrectly changed an API. See #1066.