gpt4 book ai didi

java - Spring Security SAML 实现

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:08 27 4
gpt4 key购买 nike

我从新的 Spring 项目开始,我计划在其中使用 SSO。我对博客进行了修改,了解到 spring security SAML 将是 SP 的最佳解决方案。

所以我已经实现了 spring 站点提供的 Spring Security SAML 示例应用程序 https://github.com/SpringSource/spring-security-saml作为 SP 和 Shibboleth IDP。

IDP 与 LDAP 服务器连接。我能够执行 Spring 安全示例应用程序。

我很困惑如何将这个 Spring 安全 SAML 扩展与多个 spring 项目一起使用。

任何有关构建 Spring SAML 项目与多个 Spring MVC 应用程序集成的示例链接或建议都会有所帮助。

最佳答案

如果您的 REST API 仅由与其一起部署的 Web 应用程序调用(在单个 war 中,因此共享相同的 HTTP session ),您可以使用 Spring SAML + Spring Security 来保护它们。

Spring SAML 将用于根据远程 IDP 对用户进行身份验证并填充他们的权利(授权);然后可以使用 Spring Security 为从 UI 调用的 API 定义安全策略。

如果您希望能够从远程客户端调用 REST API,您可能需要查看 Spring Security OAuth 项目 - 因为这不再与 Web 单点登录有关。

可以创建处理所有 SSO 逻辑的 Spring SAML 中央安装。当然,您将需要实现一种机制,在该机制中,Spring SAML 将有关经过身份验证的用户及其属性的信息中继到您的其他应用程序,并以安全的方式进行。一种可能的处理方法(假设应用程序部署在同一域中,因此可以共享 cookie)是:

  • 在 Spring SAML 中进行身份验证后,设置一个共享 cookie,该 cookie 对所有其他应用程序可见,例如由 Spring SAML 的 key 签名,或使用共享 key 加密,cookie 还应包含用户的属性
  • 这可以在自定义 AuthenticationSuccessHandler 中完成,随后期望将用户重定向到正确的应用程序(例如,基于某些自定义逻辑或中继状态)
  • 目标应用程序需要验证 cookie(通过检查签名或使用共享 key 解密,可能执行其他检查),解析属性并启动自己的 session ,该 session 基于 cookie 的内容进行预认证<

所有这些都可以通过实现 Spring Security 和 Spring SAML 的标准接口(interface)来完成。但这不是一项微不足道的任务 - 主要是考虑到您实现中的任何安全漏洞都可能危及您应用程序的安全性。

关于java - Spring Security SAML 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25527932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com