Zuul 路由到安全微服务结果到 401 响应

Zuul route to secured microservice results to 401 response

我创建了一个 Zuul 代理,将请求路由到微服务中的安全端点(基本身份验证)。

我的 Zuul 代理在端口 8888 上运行。

我的安全微服务有一个端点 /api/foo,通过 Spring 安全性进行 username:password 身份验证。服务 ID 等于安全服务。

现在每当我访问 http://localhost:8888/secure-service/api/foo 时,浏览器都会提示我输入我的用户名和密码(证明它确实路由到安全服务)。但是进入后,它只是不断询问我的凭据。 我也尝试通过 curl 访问它, curl http://username:password@localhost:8888/secure-service/api/foo 我收到 401 响应。

为什么会这样?

然后我尝试删除 spring 安全依赖项和我的安全服务的配置,一切正常。但我真的很想有基本的身份验证。

感谢您的阅读。

我终于找到答案了:) Zuul 中有一个配置 属性 叫做 zuul.sensitive-headers

此 属性 是一个 collection 字符串,其中包含 headers 不会被包含以传递给微服务。目前,Spring Cloud Zuul(版本 2.2。1.RELEASE)默认设置这 3 个值。

Cookie,Set-Cookie,授权

看在上帝的份上,他们将授权作为敏感内容之一headers,这就是为什么每当 Zuul 尝试路由到安全的微服务时,您都会不断收到 401 未经授权的响应。

解决方案是在您的 Zuul 应用程序中删除 Config 属性 中的授权。

zuul.sensitive-headers=Cookie,Set-Cookie

希望对您有所帮助。