Java 实现跨Web访问的SSO

Java 实现跨Web访问的SSO,java,php,web,single-sign-on,Java,Php,Web,Single Sign On,我将构建一个SSO基础设施,它支持一些站点的一次性登录。 你知道它是怎么工作的吗,。? 我指的是架构,以及所有这些站点如何通信,并询问用户是否已经通过身份验证,是否有任何特殊协议,。? 我熟悉Java和PHP编程,哪一个最适合SSO实现 感谢您的回复,无论您做什么,都不要尝试编写自己的库,除非您具有强大的加密、浏览器漏洞利用、cookie和会话管理方面的背景。(如果你确实有这些学科的背景,你可能不会问这个问题,所以我会给你一些更有用的建议。) 对于Java,有两个大的安全库可用:Spring s

我将构建一个SSO基础设施,它支持一些站点的一次性登录。 你知道它是怎么工作的吗,。? 我指的是架构,以及所有这些站点如何通信,并询问用户是否已经通过身份验证,是否有任何特殊协议,。? 我熟悉Java和PHP编程,哪一个最适合SSO实现


感谢您的回复,

无论您做什么,都不要尝试编写自己的库,除非您具有强大的加密、浏览器漏洞利用、cookie和会话管理方面的背景。(如果你确实有这些学科的背景,你可能不会问这个问题,所以我会给你一些更有用的建议。)

对于Java,有两个大的安全库可用:Spring security或Apache Shiro:

Spring Security非常成熟,但非常灵活。对于简单的应用程序来说,它几乎做得太多了,但是如果您已经在使用Spring,那么使用Spring安全性就很有意义了。它充满了功能,如果你需要高度颗粒化的安全性,它可以做一些很棒的事情。它与CAS(SSO服务器)集成,可以针对LDAP、JDBC等进行身份验证。Spring安全性是“声明性的”;它依靠注释和运行时AOP将授权检查点注入应用程序

ApacheShiro更简单:一个servlet过滤器和一个.ini文件,您就可以启动并运行了。它有非常简单的SSO和MemberMe功能,比SpringSecurity更容易实现。API是编程的,而不是声明性的;我认为这更简单,但使您的代码与Shiro库紧密耦合


这两种方法都要求您坚持主流Java模式和良好的编程实践。其他地方的编程很差,会使任何安全框架无效。

谢谢您宝贵的回复,exabrial,。我会去看看,学习的,非常感谢,。问候,:)