disable PKCE by default
This commit is contained in:
Родитель
58b229e530
Коммит
444d45ba50
|
@ -281,7 +281,7 @@ of ``mozilla-django-oidc``.
|
||||||
|
|
||||||
.. py:attribute:: OIDC_USE_PKCE
|
.. py:attribute:: OIDC_USE_PKCE
|
||||||
|
|
||||||
:default: ``True``
|
:default: ``False``
|
||||||
|
|
||||||
Controls whether the authentication backend uses PKCE (Proof Key For Code Exchange) during the authorization code flow.
|
Controls whether the authentication backend uses PKCE (Proof Key For Code Exchange) during the authorization code flow.
|
||||||
|
|
||||||
|
@ -324,4 +324,3 @@ of ``mozilla-django-oidc``.
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
https://datatracker.ietf.org/doc/html/rfc7636#section-4.1
|
https://datatracker.ietf.org/doc/html/rfc7636#section-4.1
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,6 @@ class OIDCAuthenticationCallbackView(View):
|
||||||
auth.logout(request)
|
auth.logout(request)
|
||||||
assert not request.user.is_authenticated
|
assert not request.user.is_authenticated
|
||||||
elif "code" in request.GET and "state" in request.GET:
|
elif "code" in request.GET and "state" in request.GET:
|
||||||
|
|
||||||
# Check instead of "oidc_state" check if the "oidc_states" session key exists!
|
# Check instead of "oidc_state" check if the "oidc_states" session key exists!
|
||||||
if "oidc_states" not in request.session:
|
if "oidc_states" not in request.session:
|
||||||
return self.login_failure()
|
return self.login_failure()
|
||||||
|
@ -197,7 +196,7 @@ class OIDCAuthenticationRequestView(View):
|
||||||
nonce = get_random_string(self.get_settings("OIDC_NONCE_SIZE", 32))
|
nonce = get_random_string(self.get_settings("OIDC_NONCE_SIZE", 32))
|
||||||
params.update({"nonce": nonce})
|
params.update({"nonce": nonce})
|
||||||
|
|
||||||
if self.get_settings("OIDC_USE_PKCE", True):
|
if self.get_settings("OIDC_USE_PKCE", False):
|
||||||
code_verifier_length = self.get_settings("OIDC_PKCE_CODE_VERIFIER_SIZE", 64)
|
code_verifier_length = self.get_settings("OIDC_PKCE_CODE_VERIFIER_SIZE", 64)
|
||||||
# Check that code_verifier_length is between the min and max length
|
# Check that code_verifier_length is between the min and max length
|
||||||
# defined in https://datatracker.ietf.org/doc/html/rfc7636#section-4.1
|
# defined in https://datatracker.ietf.org/doc/html/rfc7636#section-4.1
|
||||||
|
|
|
@ -477,6 +477,7 @@ class OIDCAuthorizationRequestViewTestCase(TestCase):
|
||||||
|
|
||||||
@override_settings(OIDC_OP_AUTHORIZATION_ENDPOINT="https://server.example.com/auth")
|
@override_settings(OIDC_OP_AUTHORIZATION_ENDPOINT="https://server.example.com/auth")
|
||||||
@override_settings(OIDC_RP_CLIENT_ID="example_id")
|
@override_settings(OIDC_RP_CLIENT_ID="example_id")
|
||||||
|
@override_settings(OIDC_USE_PKCE=True)
|
||||||
@patch("mozilla_django_oidc.views.get_random_string")
|
@patch("mozilla_django_oidc.views.get_random_string")
|
||||||
def test_get(self, mock_views_random):
|
def test_get(self, mock_views_random):
|
||||||
"""Test initiation of a successful OIDC attempt."""
|
"""Test initiation of a successful OIDC attempt."""
|
||||||
|
@ -588,6 +589,7 @@ class OIDCAuthorizationRequestViewTestCase(TestCase):
|
||||||
@override_settings(ROOT_URLCONF="tests.namespaced_urls")
|
@override_settings(ROOT_URLCONF="tests.namespaced_urls")
|
||||||
@override_settings(OIDC_OP_AUTHORIZATION_ENDPOINT="https://server.example.com/auth")
|
@override_settings(OIDC_OP_AUTHORIZATION_ENDPOINT="https://server.example.com/auth")
|
||||||
@override_settings(OIDC_RP_CLIENT_ID="example_id")
|
@override_settings(OIDC_RP_CLIENT_ID="example_id")
|
||||||
|
@override_settings(OIDC_USE_PKCE=True)
|
||||||
@override_settings(
|
@override_settings(
|
||||||
OIDC_AUTHENTICATION_CALLBACK_URL="namespace:oidc_authentication_callback"
|
OIDC_AUTHENTICATION_CALLBACK_URL="namespace:oidc_authentication_callback"
|
||||||
)
|
)
|
||||||
|
@ -629,6 +631,7 @@ class OIDCAuthorizationRequestViewTestCase(TestCase):
|
||||||
|
|
||||||
@override_settings(OIDC_OP_AUTHORIZATION_ENDPOINT="https://server.example.com/auth")
|
@override_settings(OIDC_OP_AUTHORIZATION_ENDPOINT="https://server.example.com/auth")
|
||||||
@override_settings(OIDC_RP_CLIENT_ID="example_id")
|
@override_settings(OIDC_RP_CLIENT_ID="example_id")
|
||||||
|
@override_settings(OIDC_USE_PKCE=True)
|
||||||
@override_settings(
|
@override_settings(
|
||||||
OIDC_AUTH_REQUEST_EXTRA_PARAMS={"audience": "some-api.example.com"}
|
OIDC_AUTH_REQUEST_EXTRA_PARAMS={"audience": "some-api.example.com"}
|
||||||
)
|
)
|
||||||
|
@ -671,6 +674,7 @@ class OIDCAuthorizationRequestViewTestCase(TestCase):
|
||||||
|
|
||||||
@override_settings(OIDC_OP_AUTHORIZATION_ENDPOINT="https://server.example.com/auth")
|
@override_settings(OIDC_OP_AUTHORIZATION_ENDPOINT="https://server.example.com/auth")
|
||||||
@override_settings(OIDC_RP_CLIENT_ID="example_id")
|
@override_settings(OIDC_RP_CLIENT_ID="example_id")
|
||||||
|
@override_settings(OIDC_USE_PKCE=True)
|
||||||
@patch("mozilla_django_oidc.views.get_random_string")
|
@patch("mozilla_django_oidc.views.get_random_string")
|
||||||
@patch("mozilla_django_oidc.views.OIDCAuthenticationRequestView.get_extra_params")
|
@patch("mozilla_django_oidc.views.OIDCAuthenticationRequestView.get_extra_params")
|
||||||
def test_get_with_overridden_extra_params(
|
def test_get_with_overridden_extra_params(
|
||||||
|
|
Загрузка…
Ссылка в новой задаче