4

我在一个开发团队中从事一个使用基于 Spring 的微服务的大型项目。我们最近发现了 Spring Cloud 项目,并正在尝试实现 Netflix 服务、Zuul、Eureka、Ribbon 等。

在我们的环境中,在通过外部服务获得预授权之前,没有人可以访问我们的应用程序将在其上运行的域。一旦他们到达我们的应用程序,我们将能够通过授权服务提供的标头令牌获取用户的身份。

我希望 Zuul 使用预身份验证过滤器设置 Spring Security 以建立用户会话,并使用 Spring Session 使会话可用于所有后端微服务。

这是一种合法的方法吗?我能看到的关于 Zuul 安全性的唯一信息是将 OAuth2 令牌代理到后端服务的能力,但我们不需要 OAuth2。有没有更好的方法来建立用户会话并在我们的后端架构中的服务之间共享它?

4

2 回答 2

4

请看下面的教程

你可以跳转到GitHub 上的代码

我能够启动并运行该项目,并且现在正在修改内存中的身份验证以使用 Ldap。我是 Java 新手,发现本教程非常简单。

你的,

迈克·科瓦尔斯基

于 2015-09-24T12:40:35.810 回答
-1

像您一样,我不需要 OAuth,并且发现在没有 OAuth 的情况下开箱即用的 Zuul 缺乏身份验证支持。我想在不丢失 Spring Cloud 发现和客户端负载平衡能力的情况下调用 auth 服务。我通过RibbonRoutingFilter稍后装饰如下实现了这一点。请注意,这种方法需要RibbonRoutingFilter禁用原始文件,这可以通过以下行中的一行来完成application.ymlzuul.RibbonRoutingFilter.route.disable: true

基本上,在将请求委托给原始RibbonRoutingFilter. 如果 auth 成功,我会恢复原来的 service id 并将请求再次委托给原来的RibbonRoutingFilter. 如果身份验证不成功,我会返回一个错误。我的 GitHub 上的完整代码:AuthAwareRoutingFilter.java

于 2016-05-22T21:11:19.043 回答