我对Symfony2中的安全概念有了基本的了解。现在我正在尝试为多域网站实现单点登录功能。
SSO 概念本身相当简单:
- 域 A 是 cookie 域;人们可以登录此域
- 在域 B 上登录时,用户将被重定向到域 A,其中需要一次性密码。用户需要域 A 上的会话才能获取此密码。
- 获取 OTP 后,将用户返回到域 B,它将 OTP 与域 A 上的会话匹配。
- 如果匹配,将为域 B 创建一个会话。对于从此时起的每个后续请求,该会话将针对域 A 上的会话进行验证。
可以像往常一样为域 A 实施防火墙/身份验证。据我了解,我需要:
- 为域 B 设置防火墙
- 为该防火墙创建一个侦听器,以某种方式将用户重定向到域 A(更具体地说:请求 OTP 的 uri)
- 创建处理 OTP 并为域 B 创建会话的身份验证提供程序
- 创建另一个侦听器,根据域 A 上的会话检查会话有效性
但是,我真的可以使用一些技巧来说明如何在捆绑中执行此操作。如果有人可以在这里帮助我,那就太好了。
另外,我还不确定如何实现 OTP,或者如何比较两个会话,并确保它们都是有效的。稍后会出现,我需要先让这个工作流程正常工作。