我将构建一个 SSO 基础设施,支持某些站点的一次性登录。 你知道它是如何工作的吗? 我的意思是架构以及所有这些站点如何通信并询问用户是否已经通过身份验证,是否有任何特殊协议(protocol)。? 我熟悉 Java 和 PHP 编程,哪一种最适合 SSO 实现?
感谢您的回复,
最佳答案
无论您做什么,都不要尝试编写自己的库,除非您具有强大的密码学、浏览器漏洞利用、cookie 和 session 管理方面的背景。 (如果您确实有这些主题的背景,您可能不会问这个问题,所以我会尽力给您一些更有用的建议。)
对于 Java,有两个可用的大型安全库:Spring Security 或 Apache Shiro:
Spring Security 非常成熟,但也非常灵活。对于简单的应用程序来说,它的作用几乎太多了,但如果您已经在使用 Spring,那么使用 Spring Security 就有意义了。它充满了功能,如果您需要高度粒度化的安全性,它可以做一些很棒的事情。它与 CAS(SSO 服务器)集成,并且可以针对 LDAP、JDBC 等进行身份验证。 Spring Security 是“声明式”的;它依赖注释和运行时 AOP 将授权检查点注入(inject)到您的应用程序中。
Apache Shiro 更简单:一个 servlet 过滤器和一个 .ini 文件,然后就可以启动并运行了。它具有非常简单的 SSO 和 Remember Me 功能,比 Spring Security 更容易实现。 API本质上是编程式的,而不是声明式的;我认为这更简单,但使您的代码与 Shiro 库紧密耦合。
这两种方法都要求您坚持主流 Java 模式和良好的编程实践。其他地方的糟糕编程会使任何安全框架失效。
关于java - 实现 SSO 进行跨 Web 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9565604/