HAProxy 中的 JWT 验证

2024-02-18

我有一个 HAProxy 配置为接受对 *.mysubdomain.com 的请求。 HAProxy 将解析子域(来自 prod.mysubdomain.com 或 dev.mysubdomain.com 的 prod 或 dev)并转发到正确的后端。存在两个后端,一个用于生产,一个用于开发。每个后端包含两个指向每个子域上的 Marathon LB 实例的服务器条目。

子域需要 JWT cookie 在后端进行身份验证。我有公钥来检查 JWT 的有效性,但想在 HAProxy 中执行此操作。有没有办法添加我自己的代码来在 HAProxy 配置中执行 JWT 有效性检查?

HAProxy配置文件如下:

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

HAProxy 可以充当 API 网关并根据公钥验证 JWT 令牌。他们撰写了一篇博文并提供了示例代码来向您展示如何操作。

帖子在这里:https://www.haproxy.com/blog/using-haproxy-as-an-api-gateway-part-2-authentication/ https://www.haproxy.com/blog/using-haproxy-as-an-api-gateway-part-2-authentication/

示例lua代码在这里:https://github.com/haproxytech/haproxy-lua-jwt https://github.com/haproxytech/haproxy-lua-jwt

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HAProxy 中的 JWT 验证 的相关文章

随机推荐