VorwortDa es keine Abhängigkeiten von Datenbanken und anderen Ressourcen beinhaltet, ist jwt selbst auch zustandslos. Daher basiert der Authentifizierungsdienst nicht mehr auf Java oder anderen Sprachen. Stattdessen verwenden wir das Lua-Skript, um nginx zu verbessern: Wir verwenden das Lua-Skript, um zu überprüfen, ob das Token gültig ist. Wenn es ungültig ist, geben wir direkt 401 zurück. Wenn es gültig ist, leiten wir es so weiter. Lua-Skript Hier bin ich auf eine große Grube mit dem Geheimnis gestoßen. Zuerst habe ich den Schlüssel direkt aus dem Java-Backend-Projekt kopiert, aber es kam immer wieder zu nignx.conf-Konfiguration--nginx-jwt.lua lokales cjson = erfordert "cjson" lokales jwt = erfordert „resty.jwt“ --dein Geheimnis lokales Geheimnis = "IhrGeheimnis dort" --Keine Authentifizierung erforderlich. API-Liste lokal no_need_token_api_list = {'/api/register', '/api/login'} lokale Funktion ignore_url (val) für Index, Wert in ipairs(no_need_token_api_list) wenn (Wert == Wert) dann returniere wahr Ende Ende return false Ende lokales M = {} Funktion M.auth() wenn ignore_url(ngx.var.request_uri) dann zurückkehren anders Ende -- Autorisierungsanforderungsheader erforderlich lokaler Auth-Header = ngx.var.http_Authorization wenn auth_header == nil dann ngx.log(ngx.WARN, „Kein Autorisierungsheader“) ngx.exit(ngx.HTTP_UNAUTHORIZED) Ende --require Bearer-Token (Bearer-Token erforderlich) lokales _, _, Token = Zeichenfolge.find(auth_header, "Bearer%s+(.+)") wenn Token == Null dann ngx.log(ngx.ERR, "Token fehlt") ngx.exit(ngx.HTTP_UNAUTHORIZED) Ende --decode_base64 ist konsistent mit dem lokalen Backend jwt_obj = jwt:verify(ngx.decode_base64(secret), token) wenn jwt_obj.verified == false dann ngx.log(ngx.ERR, "Ungültiges Token: ".. jwt_obj.reason) ngx.status = ngx.HTTP_UNAUTHORIZED ngx.say(cjson.encode(jwt_obj)) ngx.header.content_type = "Anwendung/json; Zeichensatz=utf-8" ngx.exit(ngx.HTTP_UNAUTHORIZED) Ende Ende Rückkehr M Dockerfile-KonfigurationArbeiterprozesse 1; Veranstaltungen { Arbeiterverbindungen 1024; } http { lua_package_path "/opt/lua-resty-jwt/lib/?.lua;;"; Upstream-Backend { Server 192.168.1.1:8080; } Zugriffsprotokoll /logs/nginx_access.log; Fehlerprotokoll /logs/nginx_error.log; Server { hören Sie 80; #Backend-API-Schnittstellen-Proxy-Speicherort /api/ { Zugriff über Lua-Block { lokales Objekt = erforderlich('nginx-jwt') obj.auth() } Proxy-Passwort http://backend; Proxy_Redirect aus; Proxy_Set_Header Host $host; Proxy_Set_Header X-Real-IP $Remote_Addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; } } } Dies ist das Ende dieses Artikels über die Verwendung von Nginx und Lua zur JWT-Verifizierung. Weitere Informationen zu Nginx und Lua zur JWT-Verifizierung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Aggregatabfrage- und Union-Abfragevorgänge für MySQL-Datenbanken
>>: Beispielcode für HTML-Formularkomponente
Aktuelle Nachfrage: Es gibt zwei Tabellen, Gruppe...
Die Seitenlänge im Projekt beträgt etwa 2000 Pixe...
Inhaltsverzeichnis $.ajax von jQuery Der Beginn d...
Rendern Beispielcode Heute werden wir das WeChat-...
Zwei Parameter der MySQL-Paging Wählen Sie * aus ...
Inhaltsverzeichnis 1. Prozesskontrolle 2. Sequent...
Heutige Webdesigns neigen dazu, sehr große Schrif...
Im Windows-Betriebssystem das Programm zum Abfrag...
1. Spring Boot unterstützt kein JSP-JAR-Paket, JS...
1. Installationsumgebung Computermodell: Lenovo Y...
Auf einer Seite gibt es viele Steuerelemente (Elem...
Der Sortierbefehl wird sehr häufig verwendet, ver...
Inhaltsverzeichnis Prometheus überwacht MySQL übe...
Vorwort Die Verwendung von CSS zum Generieren gep...
1. PRIMARY KEY hinzufügen (Primärschlüsselindex) ...