mirror of
https://github.com/django/django.git
synced 2025-10-23 21:59:11 +00:00
Fixed #25029 -- Added PersistentRemoteUserMiddleware for login-page-only external authentication.
This commit is contained in:
committed by
Tim Graham
parent
c6cce4de38
commit
a570701e02
@@ -19,7 +19,8 @@ When the Web server takes care of authentication it typically sets the
|
||||
``REMOTE_USER`` environment variable for use in the underlying application. In
|
||||
Django, ``REMOTE_USER`` is made available in the :attr:`request.META
|
||||
<django.http.HttpRequest.META>` attribute. Django can be configured to make
|
||||
use of the ``REMOTE_USER`` value using the ``RemoteUserMiddleware`` and
|
||||
use of the ``REMOTE_USER`` value using the ``RemoteUserMiddleware``
|
||||
or ``PersistentRemoteUserMiddleware``, and
|
||||
:class:`~django.contrib.auth.backends.RemoteUserBackend` classes found in
|
||||
:mod:`django.contrib.auth`.
|
||||
|
||||
@@ -95,3 +96,25 @@ If your authentication mechanism uses a custom HTTP header and not
|
||||
If you need more control, you can create your own authentication backend
|
||||
that inherits from :class:`~django.contrib.auth.backends.RemoteUserBackend` and
|
||||
override one or more of its attributes and methods.
|
||||
|
||||
.. _persistent-remote-user-middleware-howto:
|
||||
|
||||
Using ``REMOTE_USER`` on login pages only
|
||||
=========================================
|
||||
|
||||
.. versionadded:: 1.9
|
||||
|
||||
The ``RemoteUserMiddleware`` authentication middleware assumes that the HTTP
|
||||
request header ``REMOTE_USER`` is present with all authenticated requests. That
|
||||
might be expected and practical when Basic HTTP Auth with ``htpasswd`` or other
|
||||
simple mechanisms are used, but with Negotiate (GSSAPI/Kerberos) or other
|
||||
resource intensive authentication methods, the authentication in the front-end
|
||||
HTTP server is usually only set up for one or a few login URLs, and after
|
||||
successful authentication, the application is supposed to maintain the
|
||||
authenticated session itself.
|
||||
|
||||
:class:`~django.contrib.auth.middleware.PersistentRemoteUserMiddleware`
|
||||
provides support for this use case. It will maintain the authenticated session
|
||||
until explicit logout by the user. The class can be used as a drop-in
|
||||
replacement of :class:`~django.contrib.auth.middleware.RemoteUserMiddleware`
|
||||
in the documentation above.
|
||||
|
||||
Reference in New Issue
Block a user