All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
8.0.0 - 2024-06-18
- Adding explicit support for Python
3.12. - Publicly expose
requests_auth.SupportMultiAuth, allowing multiple authentication support for everyrequestsauthentication class that exists. - Publicly expose
requests_auth.TokenMemoryCache, allowing to create custom Oauth2 token cache based on this default implementation. - You can now provide your own HTML success (
success_html) and failure (failure_html) display via the newOAuth2.displayshared setting. Refer to documentation for more details. - Thanks to the new
redirect_uri_domainparameter on Authorization code (with and without PKCE) and Implicit flows, you can now provide the FQDN to use in theredirect_uriwhenlocalhost(the default) is not allowed. requests_auth.WakaTimeAuthorizationCodehandling access to the WakaTime API.
- Except for
requests_auth.testing, only direct access viarequests_auth.was considered publicly exposed. This is now explicit, as inner packages are now using private prefix (_). If you were relying on some classes or functions that are now internal, feel free to open an issue. requests_auth.JsonTokenFileCacheandrequests_auth.TokenMemoryCacheget_tokenmethod does not handle kwargs anymore, theon_missing_tokencallable does not expect any arguments anymore.requests_auth.JsonTokenFileCachedoes not exposetokens_pathorlast_save_timeattributes anymore and is also allowingpathlib.Pathinstances as cache location.requests_auth.TokenMemoryCachedoes not exposeforbid_concurrent_cache_accessorforbid_concurrent_missing_token_function_callattributes anymore.- Browser display settings have been moved to a shared setting, see documentation for more information on
requests_auth.OAuth2.display. The failure page will be displayed for 10 seconds by default instead of 5 seconds previously. As a result the following classes no longer exposesuccess_display_timeandfailure_display_timeparameters.requests_auth.OAuth2AuthorizationCode.requests_auth.OktaAuthorizationCode.requests_auth.WakaTimeAuthorizationCode.requests_auth.OAuth2AuthorizationCodePKCE.requests_auth.OktaAuthorizationCodePKCE.requests_auth.OAuth2Implicit.requests_auth.AzureActiveDirectoryImplicit.requests_auth.AzureActiveDirectoryImplicitIdToken.requests_auth.OktaImplicit.requests_auth.OktaImplicitIdToken.
- The authentication success and failure displayed in the browser were revamped to be more user-friendly.
requests_auth.testingwas modified to accommodate this change:tab.assert_successexpected_messageparameter was removed.tab.assert_failureexpected_messageparameter should not be prefixed withUnable to properly perform authentication:anymore and\nin the message should be replaced with<br>.
- Exceptions issued by
requests_authare now inheriting fromrequests_auth.RequestsAuthException, itself inheriting fromrequests.RequestException, instead ofException.
- Type information is now provided following PEP 561.
- Remove deprecation warnings due to usage of
utcnowandutcfromtimestamp. requests_auth.OktaClientCredentialsscopeparameter is now mandatory and does not default toopenidanymore.requests_auth.OktaClientCredentialswill now display a more user-friendly error message in case Okta instance is not provided.- Tokens cache
DEBUGlogs will not display tokens anymore. - Handle
text/html; charset=utf-8content-type in token responses.
- Removing support for Python
3.7. - Deprecated
requests_auth.Authsclass has been removed.
7.0.0 - 2023-04-27
requests_auth.OAuth2ResourceOwnerPasswordCredentialsdoes not send basic authentication by default.
session_authas a parameter ofrequests_auth.OAuth2ResourceOwnerPasswordCredentials. Allowing to provide any kind of optional authentication.requests_auth.OktaResourceOwnerPasswordCredentialsproviding Okta resource owner password credentials flow easy setup.- Explicit support for Python
3.11.
- Explicit support for Python
3.6.
6.0.0 - 2022-01-11
requests_auth.oauth2_tokens.TokenMemoryCache.get_tokenmethod now requires arguments to be named.requests_auth.oauth2_tokens.TokenMemoryCache.get_tokenmethodon_missing_tokenarguments must now be named (switched from args to kwargs).requests_auth.JsonTokenFileCache.get_tokenmethod now requires arguments to be named.requests_auth.JsonTokenFileCache.get_tokenmethodon_missing_tokenarguments must now be named (switched from args to kwargs).requests_auth.testingnow requirespyjwt==2.*.
requests_auth.oauth2_tokens.TokenMemoryCache.get_tokennow allows to specify a customearly_expiryin seconds (default to 30).requests_auth.JsonTokenFileCache.get_tokennow allows to specify a customearly_expiryin seconds (default to 30).requests_auth.OAuth2ResourceOwnerPasswordCredentialscontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.OAuth2ClientCredentialscontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.OktaClientCredentialscontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.OAuth2AuthorizationCodecontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.OktaAuthorizationCodecontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.OAuth2AuthorizationCodePKCEcontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.OktaAuthorizationCodePKCEcontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.OAuth2Implicitcontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.AzureActiveDirectoryImplicitcontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.AzureActiveDirectoryImplicitIdTokencontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.OktaImplicitcontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.requests_auth.OktaImplicitIdTokencontains a newearly_expiryparameter allowing to tweak the number of seconds before actual token expiry where the token will be considered as already expired. Default to 30s.
requests_auth.oauth2_tokens.is_expiredis not available anymore.requests_auth.oauth2_tokens.decode_base64is not available anymore.requests_auth.oauth2_tokens.TokenMemoryCache.add_bearer_tokenis not available anymore.requests_auth.oauth2_tokens.TokenMemoryCache.add_access_tokenis not available anymore.
- OAuth2 token will now be considered as expired 30 seconds before actual expiry. To ensure it is still valid when received by the actual server.
5.3.0 - 2021-06-06
- Support for refresh tokens in the Resource Owner Password Credentials flow and Authorization Code (with and without PKCE) flows (Thanks to Stijn Caerts).
5.2.0 - 2020-10-14
- Allow to provide a
requests.Sessioninstance for*AuthorizationCodeflows (evenPKCE),*ClientCredentialsand*ResourceOwnerPasswordCredentialsflows. - Explicit support for Python
3.9.
- Code now follow
black==20.8b1formatting instead of the git master version.
5.1.0 - 2020-03-04
pytestfixtures inrequests_auth.testing. Refer to documentation for more details.
5.0.2 - 2019-12-12
- Handle expires_in sent as str instead of int.
5.0.1 - 2019-11-28
- Allow to use & between authentication classes.
- Avoid DeprecationWarning in case multi auth is used with +
- Avoid packaging tests (introduced in 5.0.0)
5.0.0 - 2019-11-21
- OAuth2ClientCredentials username parameter is now client_id
- OAuth2ClientCredentials password parameter is now client_secret
- requests_auth.InvalidGrantRequest is now raised instead of requests.HTTPError in case a grant request was invalid.
- requests_auth.InvalidGrantRequest is now raised instead of requests_auth.GrantNotProvided in case a browser grant request was invalid.
- There is no info logging anymore. If you want to have those information (browser opening on a specific URL, requests received by the OAUth2 server), you will have to put requests_auth logger to DEBUG.
- Support for Python < 3.6
- requests_auth.OAuth2Flow enum, use the proper auth class instead.
- requests_auth.okta function, use the proper auth class instead.
- requests_auth.aad function, use the proper auth class instead.
- requests_auth.oauth2 function, use the proper auth class instead.
- str representation of auth classes.
- timeout parameter can now be a floating point value. (was only integer previously)
4.1.0 - 2019-11-13
- module version is now publicly available.
- multiple authentication is now possible using "+" sign.
- OktaAuthorizationCode is now available.
- OktaClientCredentials is now available.
- OAuth2AuthorizationCodePKCE is now available.
- OktaAuthorizationCodePKCE is now available.
- Exception classes defined in requests_auth.errors are now available via requests_auth.
- Auths class will be considered as internal in the future and should not be used anymore. Use "+" instead.
- This is the latest release to support Python 2.7, next release will be 3.6+ only.
- requests_auth.errors will be renamed into requests_auth.exceptions in the future.
- str representation of authentication classes will be removed in the future.
- requests_auth.oauth2 function will be removed in the future. Use specific class instead.
- requests_auth.aad function will be removed in the future. Use specific class instead.
- requests_auth.okta function will be removed in the future. Use specific class instead.
- Avoid fixing dependencies to a specific version.
- Expiry is now properly computed for access token.
- It is not possible to provide an empty OKTA authorization_server anymore.
- OKTA default value for authorization_server is now default.
4.0.1 - 2018-12-16
- Update requests dependency to the latest version.
- Update the packaging to render Markdown on pypi.
4.0.0 - 2018-12-16
- str representation of authentication classes are not prefixed by "authentication." anymore.
- [OAuth2] Implicit flow is now expecting token in access_token field by default (or id_token if response_type is id_token). This can be overridden thanks to new token_field_name parameter. Previous behavior was to expect a token named the same way than response_type (or token)
- [OAuth2] Authorization code flow provides a new code_field_name parameter to know in what field code should be expected. Default value is code. Previous behavior was to expect a code named the same way than response_type (or code)
- [Azure AD] Implicit class now provides Access Token by default. Use new IdToken class to request OpenID Connect ID Token.
- [Okta] Implicit class now provides Access Token by default. Use new IdToken class to request OpenID Connect ID Token.
- [OAuth2] Implicit flow is now ensuring that response_type is set in query. Default value is token.
- [OAuth2] Authorization code flow is now ensuring that response_type is set in query. Default value is token.
- [Azure AD] Allow to override response_type.
- [Azure AD] Allow to override expected token name.
- [Okta] Allow to override expected token name.
3.0.0 - 2018-11-13
- All previously existing OAuth2 related classes renamed to state that it corresponds to implicit flow.
- [Okta] scopes parameter merged with scope.
- Update requests dependency to latest version (2.20.1)
- [OAuth2] Remove unused redirect_uri_port_availability_timeout parameter
2.0.0 - 2018-10-09
- OAuth2 token is now provided by default in Authorization header.
- Auths does not take a list anymore but a var args instead.
- MicrosoftOAuth2 renamed into AzureActiveDirectory.
- Nonce is not a mandatory parameter anymore for MicrosoftOAuth2.
- Authentication classes can now be imported from requests_auth.
- JSONTokenFileCache can now be imported from requests_auth.
- Okta authentication is now available (thanks to Sebastien De Menten).
- Oauth2 authentication was not working with Python 2.7
- Update requests to 2.19.1 (latest version)
- OAuth2 authentication now supports GET on token reception (thanks to Sebastien De Menten).
- Extra parameters were not handled when using MicrosoftOAuth2 (now AzureActiveDirectory)
1.0.2 - 2018-01-19
- Public release