Haproxy
HAProxy 從請求中讀取 cookie 並將其重新分配為自定義標頭
Cookie
作為身份驗證服務的一部分,我收到了一個 JWT 令牌。
Cookie: "jwt_token=eyBGfdr..................."
現在,我需要在 HAProxy 中讀取該 cookie,提取
jwt_token
密鑰並添加一個名為的自定義標頭jwt_token
並分配值eyBGfdr
,最後將請求轉發給其他服務。我已經使用指令找到了解決方案的一部分,
http-request set-header
但我不確定如何讀取 cookie 並將其儲存在變數中以與set-header
指令一起使用。附加說明:我的 haproxy 位於身份驗證伺服器和 Web 服務之間。身份驗證伺服器創建一個 JWT 令牌並將其作為 cookie 插入。但是,另一端的 Web 服務只能使用自定義標頭讀取 JWT。因此,我試圖讓我的 haproxy 以某種方式工作,以便它可以從 cookie 中攔截 JWT 令牌並將其放入自定義標頭中,以便 Web 服務也可以讀取它。
haproxy.conf
global debug frontend web1 bind *:8080 mode http default_backend app1 backend app1 mode http http-request set-header jwt %[req.cook(jwt_token)] server s1 127.0.0.1:8000
代理版本
Nuster version 1.8.8.2.2 Copyright (C) 2017-2018, Jiang Wenyuan, <koubunen AT gmail DOT com > HA-Proxy version 1.8.8.2 2018/05/29 Copyright 2000-2018 Willy Tarreau <willy@haproxy.org>
server.py
#!/usr/bin/env python import SimpleHTTPServer import SocketServer import logging import time PORT = 8000 class GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): def do_GET(self): logging.error(self.headers) SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self) Handler = GetHandler httpd = SocketServer.TCPServer(("", PORT), Handler) httpd.serve_forever()
捲曲
curl -v http://127.0.0.1:8080/xxx --cookie "jwt_token=asdf" * Trying 127.0.0.1... * TCP_NODELAY set * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > GET /xxx HTTP/1.1 > Host: 127.0.0.1:8080 > User-Agent: curl/7.60.0 > Accept: */* > Cookie: jwt_token=asdf > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: SimpleHTTP/0.6 Python/2.7.10
server.py 日誌:
User-Agent: curl/7.60.0 Accept: */* Cookie: jwt_token=asdf jwt: asdf 127.0.0.1 - - [08/Jun/2018 13:30:19] "GET /xxx HTTP/1.1" 200 -