spring-security - Zuul 路由到安全的微服务结果到 401 响应
问题描述
我创建了一个 Zuul 代理,将请求路由到微服务中的安全端点(基本身份验证)。
我的 Zuul 代理在端口 8888 上运行。
我的安全微服务有一个端点 /api/foo,通过 Spring Security 使用用户名:密码进行身份验证。服务 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
此属性是一个字符串集合,其中包含不包含在传递给微服务的标头。目前,Spring Cloud Zuul(版本 2.2.1.RELEASE)默认设置这 3 个值。
Cookie,Set-Cookie,授权
看在上帝的份上,他们将授权作为敏感标头之一,这就是为什么每当 Zuul 尝试路由到安全的微服务时,您都会不断收到 401 未经授权的响应。
解决方案只是删除 Zuul 应用程序中配置属性中的授权。
zuul.sensitive-headers=Cookie,Set-Cookie
希望能帮助到你。
推荐阅读
- javascript - Firebase查询根据多个条件给出结果
- javascript - 检查合并数组是否有来自两个数组的项并更新合并数组 JS
- module - 如何在 Java 9 中覆盖其他模块中的方法
- php - 将一个值一分为二,然后在php中反转该值
- r - 添加两个数值列使新创建的列未知
- php - WooCommerce - 删除订单详细信息和电子邮件中产品标题的变体
- html - CSS样式化选择选项中的第二个单词
- java - 无法解析配置 ':app:debugCompileClasspath 的所有依赖项
- javascript - 反应如何显示标签,即使是空的
- python - 试图创建一个类来定义敌人