Validação de JWT no HAProxy
Eu tenho um HAProxy configurado para aceitar solicitações para * .mysubdomain.com. O HAProxy analisará o subdomínio (prod ou dev de prod.mysubdomain.com ou dev.mysubdomain.com) e encaminhará para o back-end correto. Existem dois back-ends, um para prod e outro para dev. Cada back-end contém duas entradas de servidor apontando para instâncias do Marathon LB em cada subdomínio.
Os subdomínios requerem um cookie JWT para autenticação no back-end. Eu tenho a chave pública para verificar a validade do JWT, mas gostaria de fazê-lo no HAProxy. Existe uma maneira de adicionar meu próprio código para executar a verificação de validade do JWT na configuração do HAProxy?
O arquivo de configuração HAProxy é o seguinte:
global
maxconn 256
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
mode http
# Returns true when one of the headers contains one of the strings either isolated or delimited by dots. This is used to perform domain name matching.
acl host_dev hdr_dom(host) -i dev
acl host_prod hdr_dom(host) -i prod
acl jwtPresent req.cook(JWT) -m found
use_backend prod_domain if jwtPresent host_prod
use_backend dev_domain if jwtPresent host_dev
default_backend prod_domain
backend prod_domain
balance roundrobin
server prodDomain1 "${MARATHON_LB_PROD_1}" maxconn 32 check
server prodDomain2 "${MARATHON_LB_PROD_2}" maxconn 32 check
backend dev_domain
balance roundrobin
server devDomain1 "${MARATHON_LB_DEV_1}" maxconn 32 check
server devDomain2 "${MARATHON_LB_DEV_2}" maxconn 32 check