我们正在尝试使用Spring扩展来实现身份联合,这是安全断言标记语言(SAML) V2.0技术概述中描述的一个用例(5.4.3使用持久性化名标识符的联邦)。
我们的应用程序试图将远程用户与业务合作伙伴之间SSO的本地帐户(在out中)关联起来。我们的应用程序是SP,合作伙伴的应用程序是IDP。
在这种情况下,如果用户试图访问安全资源,并且在我们的应用程序上没有登录会话,SP将将用户重定向到IDP。在IDP站点对用户进行身份验证后,HTTP请求将发送给带有名称标识符的SP断言消费者服务。在SP站点,如果名称标识符没有映射到本地帐户,我们的应用程序将显示一个登录页面,以挑战用户提供我们应用程序的本地身份。在用户提供程序有效凭据之后,将创建本地会话,用户可以访问安全资源。此外,还创建并持久化了两个帐户(SP和IDP)的联合。
我已经搜索了许多例子,但没有找到一个配置,可以清楚地描述我需要什么。我还没有找到一个Spring文档来描述我如何实现这一点。
基本上,我的问题是如何创建/config自定义登录屏幕并持久化此标识联合。有什么想法、例子或文件吗?
顺便说一句,这与平安联谊会的账户链接非常相似。
谢谢你的帮助,非常感谢。
发布于 2014-09-22 21:04:45
解决这一问题的一个办法是:
SAMLUserDetailsService,它将Assertion (持久NameID)的内容映射到本地帐户UserDetails对象,并添加GrantedAuthority (例如ROLE_FULL_ACCESS )
AuthenticationSuccessHandler,它检测用户是否有本地帐户(基于Authentication对象,从SAMLUserDetailsService填充数据)
Authentication对象更新当前UserDetails对象
应该只有完全经过身份验证的用户(即具有本地帐户的用户)才能访问的内容应该使用角色ROLE_FULL_ACCESS进行保护,因此使用IDP进行身份验证但尚未执行链接的用户不能访问这些内容。
https://stackoverflow.com/questions/25979078
复制相似问题