Delegarea Autentificării către Servicii Externe cu Directiva auth_request în Nginx

Ghid de integrare SSO și securitate modernă cu auth_request: protejarea resurselor web prin validarea fiecărei cereri la un server de autentificare extern (OAuth2 Proxy, Authelia, Keycloak) înainte de accesul la backend.

Sintaxă
auth_request /auth-verify; auth_request_set $user $upstream_http_x_user;

În arhitecturile enterprise și sistemele moderne de tip Single Sign-On (SSO), gestionarea sesiunilor și a parolelor nu mai este lăsată pe seama fiecărui microserviciu în parte. Directiva auth_request permite lui Nginx să intercepteze fiecare cerere primită și să trimită un sub-apel intern (subrequest) către un server central de autentificare (OAuth2 Proxy, Authelia, Keycloak sau un endpoint intern API). Dacă serverul de auth răspunde cu HTTP 200 OK, cererea este lăsată să treacă către aplicație; dacă răspunde cu 401 sau 403, Nginx respinge accesul sau redirecționează vizitatorul către pagina de login.

Protejarea unui panou administrativ cu un serviciu extern de verificare
server {
    listen 443 ssl;
    server_name dashboard.dexblog.ro;

    location / {
        # 1. Delegăm autorizarea către sub-locația internă /auth:
        auth_request /auth;

        # 2. Extragem antetul de utilizator validat trimis de serviciul de auth
        #    și îl injectăm în cererea către aplicația backend:
        auth_request_set $auth_user $upstream_http_x_authenticated_user;
        proxy_set_header X-User $auth_user;

        proxy_pass http://localhost:8080;
    }

    # Punctul intern de validare a token-ului de sesiune:
    location = /auth {
        internal;
        proxy_pass http://127.0.0.1:9091/verify;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
    }

    # Dacă serverul de auth returnează 401, redirecționăm utilizatorul la portalul de login:
    error_page 401 = @login_redirect;
    location @login_redirect {
        return 302 https://auth.dexblog.ro/login?rd=$scheme://$http_host$request_uri;
    }
}
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Delegarea Autentificării către Servicii Externe cu Directiva auth_request

Ai o nelămurire despre utilizarea comenzii Delegarea Autentificării către Servicii Externe cu Directiva auth_request sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.