---
title: "Autentykacja przy użyciu REMOTE_USER"
version: 3.0
locale: pl
source: https://docs.djangoproject.com/pl/3.0/howto/auth-remote-user/
canonical: https://djangodocs.dev/pl/3.0/howto/auth-remote-user/
---
# Autentykacja przy użyciu `REMOTE_USER`

Ten dokument opisuje jak zrobić użytek z zewnętrznych źródeł uwierzytelniania (gdzie Web serwer ustawia zmienną środowiskową `REMOTE_USER`) w twoich aplikacjach Django. Ten typ sposobu na uwierzytelnianie można zazwyczaj spotkać na stronach intranetowych z rozwiązaniami pojedynczego logowania takimi jak ISS i Integrated Windows Authentication lub Apache i [mod\_authnz\_ldap](https://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html), [CAS](https://www.apereo.org/projects/cas), [Cosign](http://weblogin.org), [WebAuth](https://www.stanford.edu/services/webauth/), [mod\_auth\_sspi](https://sourceforge.net/projects/mod-auth-sspi) itp.

Kiedy serwer WWW zajmuje się autentykacją, zazwyczaj ustawia zmienną środowiskową `REMOTE_USER` do użytku w aplikacji pod spodem. W Django `REMOTE_USER` jest udostępniony w atrybucie [`request.META`](/pl/3.0/ref/request-response/#django.http.HttpRequest.META). Django może zostać skonfigurowane tak, aby korzystać z wartości `REMOTE_USER` przy pomocy `RemoteUserMiddleware` lub `PersistentRemoteUserMiddleware` i klas [`RemoteUserBackend`](/pl/3.0/ref/contrib/auth/#django.contrib.auth.backends.RemoteUserBackend), które można znaleźć w [`django.contrib.auth`](/pl/3.0/topics/auth/#module-django.contrib.auth).

## Konfiguracja

Najpierw musisz dodać [`django.contrib.auth.middleware.RemoteUserMiddleware`](/pl/3.0/ref/middleware/#django.contrib.auth.middleware.RemoteUserMiddleware) do ustawienia [`MIDDLEWARE`](/pl/3.0/ref/settings/#std-setting-MIDDLEWARE) **po** [`django.contrib.auth.middleware.AuthenticationMiddleware`](/pl/3.0/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware):

```
MIDDLEWARE = [
    '...',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.RemoteUserMiddleware',
    '...',
]
```

Następnie musisz zamienić [`ModelBackend`](/pl/3.0/ref/contrib/auth/#django.contrib.auth.backends.ModelBackend) na [`RemoteUserBackend`](/pl/3.0/ref/contrib/auth/#django.contrib.auth.backends.RemoteUserBackend) w ustawieniu [`AUTHENTICATION_BACKENDS`](/pl/3.0/ref/settings/#std-setting-AUTHENTICATION_BACKENDS):

```
AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.RemoteUserBackend',
]
```

W takiej konfiguracji `RemoteUserMiddleware` wykryje nazwę użytkownika w `request.META['REMOTE_USER']` i będzie autentykował ją i automatycznie logował tego użytkownika przy pomocy [`RemoteUserBackend`](/pl/3.0/ref/contrib/auth/#django.contrib.auth.backends.RemoteUserBackend).

Miej świadomość, że ta konkretna konfiguracja wyłącza autentykację z domyślnym `ModelBackend`. To oznacza, że jeśli wartość `REMOTE_USER` nie jest ustawiona, wtedy użytkownik nie jest w stanie się zalogować, nawet używając interfejsu panelu administracyjnego Django. Dodanie `'django.contrib.auth.backends.ModelBackend'` do listy `AUTHENTICATION_BACKENDS` będzie używać `ModelBackend` jako fallbacku, jeśli nie ma `REMOTE_USER`, co rozwiąże te problemy.

Zarządzanie użytkownikami Django, tak jak widok w  `contrib.admin` i polecenie [`createsuperuser`](/pl/3.0/ref/django-admin/#django-admin-createsuperuser)  nie jest zintegrowane ze zdalnymi użytkownikami. Te interfejsy pracują z użytkownikami przechowywanymi w bazie bez względu na `AUTHENTICATION_BACKENDS`.

> **Note**
>
> Dopóki `RemoteUserBackend` dziedziczy z  ```ModelBackend ``, będziesz miał te same uprawnienia zaimplementowane w ``ModelBackend```.
>
> Użytkownicy z [`is_active=False`](/pl/3.0/ref/contrib/auth/#django.contrib.auth.models.User.is_active)  nie będą mieli przyzwolenia na uwierzetelnienie. Użyj [`AllowAllUsersRemoteUserBackend`](/pl/3.0/ref/contrib/auth/#django.contrib.auth.backends.AllowAllUsersRemoteUserBackend) jeśli chcesz na to pozwolić.

Jeśli twój mechanizm uwierzetelniania używa niestandardowego nagłówka HTTP ani `REMOTE_USER`, możesz stworzyć podklasę `RemoteUserMiddleware` i ustawić atrybut `header` na pożądany klucz `request.META`. Na przykład:

```
from django.contrib.auth.middleware import RemoteUserMiddleware

class CustomHeaderMiddleware(RemoteUserMiddleware):
    header = 'HTTP_AUTHUSER'
```

> **Warning**
>
> Bądź bardzo ostrożny kiedy używać podklasy `RemoteUserMiddleware` z niestandardowym nagłówkiem HTTP. Musisz być pewny, że twój serwer front-endowy zawsze ustawi lub usunie ten nagłówek w oparciu o odpowiednie sprawdzenia autentykacji, nigdy nie pozwalając użytkownikowi końcowemu na przesłanie fałszywej (lub „sfałszowanej”) wartości nagłówka.
>
> To ostrzeżenie nie dotyczy `RemoteUserMiddleware` z domyślną konfiguracją `header = 'REMOTE_USER'`, ponieważ klucz nie zaczynający się od `HTTP_` w `request.META` może być ustawiony tylko przez twój serwer WSGI, nie bezpośrednio z nagłówka żądania HTTP.

Jeśli potrzebujesz więcej kontroli, możesz stworzyć swój własny backendowy system uwierzetelniania dziedziczący z [`RemoteUserBackend`](/pl/3.0/ref/contrib/auth/#django.contrib.auth.backends.RemoteUserBackend) i przeładowujący jeden lub więcej jego atrybutów i metod.

## Używaj `REMOTE_USER` tylko na stronach logowania

Middleware uwierzytelniający `RemoteUserMiddleware` zakłada, że nagłówek `REMOTE_USER` żądania HTTP jest obecny we wszystkich uwierzytelnionych żądaniach. To może być oczekiwane i praktyczne, kiedy użyty jest mechanizm Basic HTTP Auth z `htpasswd` lub jemu podobne, ale z metodą uwierzytelnienia Negotiate (GSSAPI/Kerberos) lub innymi metodami niewrażliwymi na zasoby, uwierzytelnianie we front-endowym serwerze HTTP jest zazwyczaj tylko przygotowaniem dla jednego lub kilku URLi logowania i po udanym uwierzytelnieniu aplikacja ma za zadanie samodzielnie utrzymać uwierzytelnioną sesję.

[`PersistentRemoteUserMiddleware`](/pl/3.0/ref/middleware/#django.contrib.auth.middleware.PersistentRemoteUserMiddleware) dostarcza wsparcia dla tego przypadku użycia. Będzie utrzymywać uwierzetelnioną sesję dopóki użytkownik wprost się nie wyloguje. Klasa może być użytka jako zamiennik [`RemoteUserMiddleware`](/pl/3.0/ref/middleware/#django.contrib.auth.middleware.RemoteUserMiddleware) w powyższej dokumentacji.
