2017-04-21 3 views
0

Ich habe 2 Server. Server A ist ein Windows-Server, auf dem ASP.NET ausgeführt wird, und Server B ist ein Linux-Server, auf dem Nginx ausgeführt wird. Ich muss einen Benutzer sicher von Server A zu Server B umleiten. Ich möchte Server A encrypt einen Wert wie ip=132.65.78.4;[email protected];node=abc in einen Abfrage-Parameter einer Umleitung wie diese haben: https://serverb.example.com?encrypted=<encrypted value here>nginx: Entschlüsselung eines Abfrageparameters

Dann Server B haben (ein gemeinsames Geheimnis verwenden) entschlüsseln die Abfrage param, bestätigen die IP-Adresse der Benutzer kommt von und vertrauen Sie dann den Werten user und node, um die Anforderung zu verarbeiten. Wie kann ich nginx konfigurieren, um dies zu tun? Ich kann den Server A Teil selbst basierend auf der Antwort herausfinden. Vielen Dank!

Antwort

1

Ich würde empfehlen, die Verwendung des "nginx lua" -Moduls, mit dem Sie Teile der Anfrage mit Lua-Code ändern können.

Es gibt Einrichtungen, um die Abfragezeichenfolge spezifisch zu ändern, damit Sie Ihre Verschlüsselung durchführen und den "verschlüsselten" Wert einstellen können.

https://github.com/openresty/lua-nginx-module#ngxreqset_uri_args

In dem Fall, dass Sie Anfrage Argumente bearbeiten möchten, können Sie Sie etwas tun, wie könnte also vielleicht über eine set_by_lua_block oder set_by_lua_file

dies tun können:

set_by_lua_block $validated { 
    local enc = ngx.var.arg_encrypted 
    local decrypted = decrypt(enc) 

    return do_some_validation(decrypted) and "1" or "0" 
} 

if ($validated = "0") { 
    return 403; 
} 
+0

Thx! Mein Ziel ist, dass die nginx-Seite die verschlüsselte Nachricht nur _decrypt_ muss. Würde ich immer noch "nginx lua" dafür benutzen? – berg

+0

Bearbeitete meine Antwort mit einem Vorschlag in dieser Richtung –

Verwandte Themen