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

This document describes how to make use of external authentication sources
(where the web server sets the `REMOTE_USER` environment variable) in your
Django applications.  This type of authentication solution is typically seen on
intranet sites, with single sign-on solutions such as IIS and Integrated
Windows Authentication or Apache and [mod\_authnz\_ldap](https://httpd.apache.org/docs/current/mod/mod_authnz_ldap.html), [CAS](https://www.apereo.org/projects/cas), [WebAuth](https://uit.stanford.edu/service/authentication),
[mod\_auth\_sspi](https://sourceforge.net/projects/mod-auth-sspi), etc.

Kiedy serwer WWW zajmuje się uwierzytelnianiem, zazwyczaj ustawia zmienną środowiskową `REMOTE_USER` do użycia w aplikacji bazowej. W Django, `REMOTE_USER` jest udostępniony w atrybucie ``` request.META `. Django może być skonfigurowane do wykorzystania wartości ``REMOTE_USER` ``` za pomocą `RemoteUserMiddleware` lub `PersistentRemoteUserMiddleware`, oraz `` RemoteUserBackend` `` klas znajdujących się w [`django.contrib.auth`](/pl/5.2/topics/auth/#module-django.contrib.auth).

## Konfiguracja

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

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

Następnie musisz zamienić [`ModelBackend`](/pl/5.2/ref/contrib/auth/#django.contrib.auth.backends.ModelBackend) na [`RemoteUserBackend`](/pl/5.2/ref/contrib/auth/#django.contrib.auth.backends.RemoteUserBackend) w ustawieniu [`AUTHENTICATION_BACKENDS`](/pl/5.2/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/5.2/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/5.2/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/5.2/ref/contrib/auth/#django.contrib.auth.models.User.is_active)  nie będą mieli przyzwolenia na uwierzetelnienie. Użyj [`AllowAllUsersRemoteUserBackend`](/pl/5.2/ref/contrib/auth/#django.contrib.auth.backends.AllowAllUsersRemoteUserBackend) jeśli chcesz na to pozwolić.

If your authentication mechanism uses a custom HTTP header and not
`REMOTE_USER`, you can subclass `RemoteUserMiddleware` and set the
`header` attribute to the desired `request.META` key.  For example:

*`mysite/middleware.py`*

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

 class CustomHeaderRemoteUserMiddleware(RemoteUserMiddleware):
     header = "HTTP_AUTHUSER"
```

This custom middleware is then used in the [`MIDDLEWARE`](/pl/5.2/ref/settings/#std-setting-MIDDLEWARE) setting
instead of [`django.contrib.auth.middleware.RemoteUserMiddleware`](/pl/5.2/ref/middleware/#django.contrib.auth.middleware.RemoteUserMiddleware):

```
MIDDLEWARE = [
    "...",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "mysite.middleware.CustomHeaderRemoteUserMiddleware",
    "...",
]
```

> **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/5.2/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/5.2/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/5.2/ref/middleware/#django.contrib.auth.middleware.RemoteUserMiddleware) w powyższej dokumentacji.
