2015-07-13 38 views
0

我们在Grails 2.3.11中使用Spring Security Core 2.0作为身份验证插件开发了应用程序。在应用程序之间传输登录 - Spring Security Core

每个应用程序代表一个不同的工业项目。如今,我们的客户希望实施登录前网页以访问转移登录的不同项目。

用户将登录到登录前网页,它将向该用户收取一个可用项目列表,然后,用户将点击所选项目并直接传送到该项目以维护登录。

可能吗?我们应该使用什么方法?

  • JSON认证
  • 记住,我的cookie
  • 使用Spring Security的CAS插件

由于CAS服务器。

+0

我有一个建议,可以避免执行两个登录过程。根据项目制作用户角色组(projectA组,projectB组)。制作登录后显示的简体中文。该仪表板应显示与用户所属其所有角色组相关的所有项目。您只能使用spring安全性来实现此功能。 –

+0

当你说'每个应用程序代表一个不同的工业项目',这些应用程序是什么?他们是单一网域应用程序('www.example.com'),单一应用程序在单个顶级域(“client.example.com”,“client2.example.com”)中提供多个域名等等),一个为多个顶级域名('www.foo.com','www.bar.com'等)提供服务的应用程序或者为多个域提供服务的多个应用程序?该解决方案将根据您的方案而有所不同。 – manish

+0

@manish每个登录前Web都是客户端专用的。例如,Client-1将有一个预登录页面,其中包含1 ... n个可能的项目。我认为我们代表域的方式是project1.client.com,project2.client.com,projectn.client.com –

回答

0

您可以使用外部代理服务器来实现预登录。该代理将每个请求的登录“转发”给http头中的应用程序服务器。然后你可以使用spring-security预授权过滤器。

查看图片(图1)这个article的幻想。 (谭/路口是这样一个代理)

+0

我在预登录的这个实现中看到一个问题(如果我错了,请纠正我)。根据预认证方案“请注意,使用这样的系统时,框架根本不执行身份验证检查,因此外部系统正确配置并保护所有应用程序访问非常重要。如果攻击者能够在原始请求中伪造头部,而不会被检测到,那么他们可能会选择他们希望的任何用户名。“ ¿我如何负担得起这个? –

+0

@Adolfo巴罗佐:是的,你是对的。重要的是不可能绕过代理! (无论如何这样的系统存在于现实世界中) - 我也看到了一些系统,其中代理生成某种类型的令牌并将其添加到转发的请求头中,以验证请求是否被代理“过滤”。 – Ralph

相关问题