1

我目前正在 Spring Cloud 微服务中构建安全解决方案。

当结合 springs OAuth2 和 Zuul 实现时,很容易构建一个身份验证过程,例如:

  • 用户调用 ui,它最初知道:用户未通过身份验证
  • 重定向到身份验证服务器以询问用户他的登录凭据
  • 将他重定向回 ui,提供代码或令牌。

我更喜欢带有密码身份验证流程的流程,以一种身份验证服务器位于 zuul 后面的方式

例如:

  • 1.2.3.4:8080 是 Zuul(带有 angularJS 的 UI),域“example.com”
  • 1.2.3.5:9000 是认证服务器

我可以通过某种方式配置 zuul,直接访问 1.2.3.5:9000,通过表单字段和基本身份验证来传递客户端 ID。

由于身份验证服务器将自己注册到 eureka,我还可以使用“example.com/auth_server”,它是相同的,但通过 zuul 管理。或者我也可以手动配置它....尽管如此:

密码身份验证不起作用,因为 Zuul 正在从调用中删除基本身份验证标头......

在这一点上,我发现我做错了什么......因为边缘服务可能有它自己的安全解决方案,并且将基本身份验证隧道传输到身份验证可能不是最好的方法......但是

如何通过 zuul 使用 ouath2 管理密码认证?

请帮忙 :)

4

2 回答 2

0

默认情况下,“Cookie”、“Set-Cookie”、“Authorization”被标记为路由上的敏感标头并且不会被转发。设置zuul.routes.myroute.sensitiveHeaders=''应该允许您通过这些标题,但我不确定这是最好的主意。

于 2016-03-14T17:39:00.710 回答
0

问题是晚上工作时间很晚:)

发出请求的组件没有发送授权,因为一些更新导致没有标头到达边缘服务器。

显然,如果基本或不记名授权标头被传递,一切都会按预期工作

于 2016-03-16T00:03:31.753 回答