java - 实现 SSO 进行跨 Web 访问

标签 java php web single-sign-on

我将构建一个 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/

相关文章:

php - 我的 SQL IN 查询有问题 我将多个员工 ID 存储在一个用逗号分隔的表中

web - 创建特定网络流量统计的日志文件

java - findViewById 在 onCreate 方法中给出 NullPointer 异常

java - 使用 GSON 将 JSON 转换为 Java 类

java - 这个符号在Java中是什么意思?

php - 分组输出多维数组

php - 将网站从 .html 转换为 .php

javascript - 如何将客户端浏览器事件发送到服务器

javascript - 在 wordpress 主题中插入 javascript 背景

java - 虽然 write() 中将 byteval 声明为整数,但为什么 Java I/O 流中只将低位八位写入文件