在应用程序之间传输登录-Spring安全核心

在应用程序之间传输登录-Spring安全核心,spring,security,grails,login,core,Spring,Security,Grails,Login,Core,我们使用SpringSecurityCore2.0作为身份验证插件,在Grails2.3.11中开发了应用程序 每个应用程序代表一个不同的工业项目。现在,我们的客户希望实现一个预登录web,以访问传输登录的不同项目 用户将登录预登录web,并为此用户收取可用项目列表的费用,然后,用户将单击所选项目,并将直接传送到维护登录的此项目 可能吗?我们应该用哪种方法 JSON身份验证 记得我吗 使用Spring Security CAS插件的CAS服务器 谢谢。您可以使用类似外部代理的服务器实现预登录。该

我们使用SpringSecurityCore2.0作为身份验证插件,在Grails2.3.11中开发了应用程序

每个应用程序代表一个不同的工业项目。现在,我们的客户希望实现一个预登录web,以访问传输登录的不同项目

用户将登录预登录web,并为此用户收取可用项目列表的费用,然后,用户将单击所选项目,并将直接传送到维护登录的此项目

可能吗?我们应该用哪种方法

JSON身份验证 记得我吗 使用Spring Security CAS插件的CAS服务器
谢谢。

您可以使用类似外部代理的服务器实现预登录。该代理将登录和每个请求一起转发到http头中的应用程序服务器。然后可以使用spring安全预授权过滤器


有关插图,请参见图1。Tam/Junction就是这样一个代理

我有一个建议,可以避免实现两次登录的过程。基于projectA组、projectB组创建用户角色组。制作登录后显示的dashbord。此仪表板应显示与用户所属的所有角色组相关的所有项目。您只能使用spring security来实现这一点。当您说每个应用程序代表不同的工业项目时,这些应用程序是什么?它们是在单个域www.example.com上运行的单个web应用程序、在单个顶级域client.example.com、client2.example.com等中服务于多个域的单个应用程序、服务于多个顶级域www.foo.com、www.bar.com等的单个应用程序,还是服务于多个域的多个应用程序?解决方案将根据您的场景而有所不同。@manish每个预登录web都是客户端独有的。例如,Client-1将有一个预登录页面,其中包含1…n个可能的项目。我认为我们表示域的方式将是project1.client.com、project2.client.com、projectn.client。com@EjazAhmed但是预登录webapp应该是一个独立的应用程序。我们需要将登录或会话转移到project webapp。我发现此预登录实现中存在问题,请更正我的错误。根据预身份验证场景,请注意,当使用这样的系统时,框架根本不执行身份验证检查,正确配置外部系统并保护对应用程序的所有访问非常重要。如果攻击者能够伪造其原始请求中的标题而不被检测到,那么他们可能会选择任何他们想要的用户名。阿道夫·巴罗佐:是的,你说得对。重要的是不能绕过代理!无论如何,现实世界中存在这样的系统——我也见过一些系统,其中代理生成某种令牌并将其添加到转发的请求头中,以验证请求是否被代理过滤。