Siteminder SSO + Spring Security + Angular JS

时间:2014-12-17 16:25:55

标签: angularjs spring-security single-sign-on siteminder

我已经看过很多例子,其中有一个带有Angular JS的自定义登录页面,然后我们使用用户名/ pwd进行休息POST调用,然后Spring根据我们提供的任何Auth服务进行身份验证。然后我们获得成功,从Spring Security获取用户对象,然后在Angular中创建一个Session cookie。 https://github.com/witoldsz/angular-http-auth/blob/master/src/http-auth-interceptor.js

我也看到,将Siteminder与Spring Security集成,我们在Web服务器上安装策略代理,然后使用Spring Security获取请求头,然后拉出角色并构建用户配置文件对象。

我正在寻找一种解决方案,我可以将上述两种方法结合起来。这是场景:

当用户请求index.html(Angular)时,Web服务器上的策略代理会拦截,使用Siteminder登录页面进行身份验证,然后将标头传递给应用服务器。应用服务器上的Spring Security将读取标头并从我们的应用数据库中提取角色,然后构建一个userprofile对象。现在,我想继续流程并显示角度页面,但我想弄明白,如何将用户配置文件对象发送到角度,因为此时此时角度没有进行POST调用。另外,我如何获得http-auth-interceptor,因为我需要继续检查用户是否仍然在Angular中对每个视图/状态的更改进行了身份验证。

帮助表示感谢!谢谢!

2 个答案:

答案 0 :(得分:2)

您可以实现受SiteMinder保护的小型JSON REST服务“/ your-app / profile”,读取并评估标头并将结果作为JSON对象返回。

您的Angular应用程序(例如/your-app/index.html)最好也应受SiteMinder保护,以便在没有会话的情况下访问SSO登录时立即重定向到SSO登录。此外,它必须在加载时读取JSON REST资源“/ your-app / profile”。当读取“/ your-app / profile”并相应地做出反应时,它还必须期望SMSESSION丢失 - 执行受保护的index.html页面的重新加载以触发SM SSO重新登录(如果“/ your-app / index”。 html“受保护,否则你必须通过重定向到某个受保护资源来触发登录。”

如果您想要经常检查SiteMinder会话是否仍然存在,您可以访问“/ your-app / profile”或检查是否存在SMSESSION cookie(仅在它未设置为HTTP的情况下) - 只)。

一个安全注意:如果您依赖通过SMSESSION cookie提供的无缝SSO,请注意可能的CSRF(跨站点请求伪造)攻击!

答案 1 :(得分:0)

显然,如果按照上述说明完成集成,角色和用户名在春季都将可用

Integrating Spring Security with SiteMinder