我正从Nginx迁移到Traefik,作为Docker Swarm的反向代理。
当前,每个带有Bearer令牌的请求都被发送到身份验证服务(在Swarm中运行的微服务),当身份验证正确时,该服务将发送回JWT。然后,我需要在Authorization标头中使用此JWT,以将请求发送到它所针对的服务。
使用Nginx的当前设置:
auth_request /auth;
auth_request_set $jwt $upstream_http_jwt;
proxy_set_header "Authorization" "jwt $jwt";
可以直接使用Traefik ForwardAuth来完成此方法,还是必须在请求通过身份验证后添加中间件来创建此标头?
答案 0 :(得分:0)
如果您的身份验证服务可以在其响应的 Authorization
标头中返回 JWT,则这是可能的。将 ForwardAuth 中间件的 authResponseHeaders
选项设置为 Authorization
。
authResponseHeaders 选项是要从身份验证服务器响应复制并在转发的请求上设置的标头列表,替换任何现有的冲突标头。
例如
http:
middlewares:
auth:
forwardAuth:
address: "http://your_auth_server/auth"
authResponseHeaders:
- "Authorization"