我打算构建一个SSO基础架构,可以为一些站点启用一次登录。 你知道它是如何工作的吗? 我的意思是架构以及所有这些站点如何通信并询问用户是否已经过身份验证,是否有任何特殊协议,。 我熟悉Java和PHP编程,其中一个是SSO实现的最佳套件。?
感谢您的回复,
答案 0 :(得分:2)
无论您做什么,除非您具有强加密,浏览器漏洞,Cookie和会话管理的背景,否则不要尝试编写自己的库。 (如果你确实有这些科目的背景,你可能不会问这个问题,所以我会尝试给你一些更有用的建议。)
对于Java,有两个可用的大型安全库:Spring Security或Apache Shiro:
Spring Security非常成熟但非常灵活。对于简单的应用程序来说,它几乎也 ,但如果你已经在使用Spring,那么使用Spring Security是有意义的。它充满了各种功能,如果您需要高度粒度化的安全性,它可以做一些很棒的事情。它与CAS(一个SSO服务器)集成,可以针对LDAP,JDBC等进行身份验证。 Spring Security是“声明性的”;它依赖于注释和运行时AOP将授权检查点注入您的应用程序。
Apache Shiro更简单:一个servlet过滤器和一个.ini文件,你就可以运行了。它有非常简单的SSO,并且记住我比Spring安全性更容易实现的功能。 API是程序化的,而不是声明性的;我认为这更简单,但使您的代码与Shiro库紧密耦合。
这两种方法都需要您坚持使用主流Java模式和良好的编程实践。在其他地方编程不好,导致任何安全框架无效。