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
希望对您有所帮助。
我创建了一个 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
希望对您有所帮助。