首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spring扩展实现身份联合

使用Spring扩展实现身份联合
EN

Stack Overflow用户
提问于 2014-09-22 16:42:31
回答 1查看 729关注 0票数 0

我们正在尝试使用Spring扩展来实现身份联合,这是安全断言标记语言(SAML) V2.0技术概述中描述的一个用例(5.4.3使用持久性化名标识符的联邦)。

我们的应用程序试图将远程用户与业务合作伙伴之间SSO的本地帐户(在out中)关联起来。我们的应用程序是SP,合作伙伴的应用程序是IDP。

在这种情况下,如果用户试图访问安全资源,并且在我们的应用程序上没有登录会话,SP将将用户重定向到IDP。在IDP站点对用户进行身份验证后,HTTP请求将发送给带有名称标识符的SP断言消费者服务。在SP站点,如果名称标识符没有映射到本地帐户,我们的应用程序将显示一个登录页面,以挑战用户提供我们应用程序的本地身份。在用户提供程序有效凭据之后,将创建本地会话,用户可以访问安全资源。此外,还创建并持久化了两个帐户(SP和IDP)的联合。

我已经搜索了许多例子,但没有找到一个配置,可以清楚地描述我需要什么。我还没有找到一个Spring文档来描述我如何实现这一点。

基本上,我的问题是如何创建/config自定义登录屏幕并持久化此标识联合。有什么想法、例子或文件吗?

顺便说一句,这与平安联谊会的账户链接非常相似。

谢谢你的帮助,非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2014-09-22 21:04:45

解决这一问题的一个办法是:

  • 实现自定义SAMLUserDetailsService,它将Assertion (持久NameID)的内容映射到本地帐户
    • 如果存在本地帐户,则使用用户数据填充例如UserDetails对象,并添加GrantedAuthority (例如ROLE_FULL_ACCESS )
    • 否则,它将返回一个对象,该对象指示本地帐户丢失,但不引发异常。

  • 实现自定义AuthenticationSuccessHandler,它检测用户是否有本地帐户(基于Authentication对象,从SAMLUserDetailsService填充数据)
    • 如果用户有本地帐户,则继续到默认页面。
    • 否则,将用户重定向到页面,以挑战本地标识的链接。

  • 例如,实现一个MVC控制器,或者另一个Security身份验证端点,它接受来自本地标识链接页面的回调(带有用户对本地帐户的凭据)
    • 存储持久ID和本地帐户之间的链接
    • 使用反映所选本地帐户的新Authentication对象更新当前UserDetails对象
    • 将用户重定向到默认页面

应该只有完全经过身份验证的用户(即具有本地帐户的用户)才能访问的内容应该使用角色ROLE_FULL_ACCESS进行保护,因此使用IDP进行身份验证但尚未执行链接的用户不能访问这些内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25979078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档