symfony - 实现 Symfony2 单点登录

标签 symfony single-sign-on

我对security concept有基本的了解在 Symfony2 中。现在我正在尝试为多域网站实现单点登录功能。

SSO 概念本身相当简单:

  • 域A是cookie域;人们可以登录这个域
  • 当登录域 B 时,用户被重定向到域 A,其中一个 One-time password被要求。用户需要在域 A 上进行 session 才能获取此密码。
  • 获取 OTP 后,用户返回域 B,域 B 会将 OTP 与域 A 上的 session 进行匹配。
  • 如果匹配,将为域 B 创建一个 session 。从此时起,每个后续请求都会针对域 A 上的 session 验证该 session 。

  • 可以像往常一样为域 A 实现防火墙/身份验证。根据我的理解,我需要:
  • 为域 B 设置防火墙
  • 为这个防火墙创建一个监听器,以某种方式将用户重定向到域 A(更具体地说:请求 OTP 的 uri)
  • 创建 authentication provider处理 OTP 并为域 B 创建 session
  • 创建另一个监听器,根据域 A 上的 session 检查 session 有效性

  • 但是,我真的可以使用一些关于如何在捆绑中执行此操作的提示。如果有人能在这里帮助我,那就太好了。

    此外,我还不确定如何实现 OTP,或如何比较两个 session ,并确保它们都有效。稍后会出现,我需要先让这个工作流程工作。

    最佳答案

    为了获得多域 SSO,您可以实现 SAML 解决方案。看看 simplesamlphp 软件和 symfony1 的这个扩展 https://github.com/chtitux/sfSAMLPlugin

    要解决 OTP 问题,您可以使用例如 LinOTP2 女巫与 simplesamlphp 兼容:https://github.com/lsexperts/simplesamlphp-linotp

    关于symfony - 实现 Symfony2 单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124509/

    相关文章:

    symfony - 无法安装 MakerBundle

    java - Keycloak 桌面 Java 适配器删除 KEYCLOAK_IDENTITY cookie

    single-sign-on - 与内部 AD 用户和外部用户进行 SSO 的最佳方法是什么?

    java - 什么是 SAML 元数据?

    authentication - 在对附加服务进行身份验证后向 token 添加附加声明

    java - 无法从 JSP 中的 HttpRequest header 获取用户详细信息以使用 Windows 身份验证进行 SSO

    php - 查询生成器中的 Symfony Doctrine if 语句

    php - 无法识别 ObjectManager(声明必须与 FixtureInterface->load 兼容)

    symfony - 使用 choice_list 在 symfony2 选择表单类型上使用自定义值

    php - 将 Twig 与 react.js 集成