用最简单的话来说,任何人都可以向我解释 JAAS、JACC 和 JASPIC 之间的区别吗?

In simplest terms, can anyone explain to me the difference between JAAS, JACC and JASPIC?

我会说实话。我成为开发人员已有一段时间了,但这是我第一次听说 JACC 和 JASPIC。我知道它们是授权提供者使用的标准,但它们与 JAAS 究竟有何不同?我们什么时候会使用一个而不是另一个?

我做了一些初步的研究,并不是我懒惰。只是阅读有关 JACC 和 JASPIC 的文章有点让我不知所措,我需要在尽可能短的时间内了解它,因为我需要在我即将进行的项目之一中实现它。只是在寻找我对它的理解的快速入门。

JAAS 包含在 Java SE 中,主要用于 Java SE。这是关于代码级别的安全性(你相信代码吗)。

它对 Java EE 没有直接用处,它是关于用户级安全性的(你信任这个用户吗)。

一些 Java EE 服务器可以使用基于 JAAS LoginModules 的东西进行身份验证,但是 JAAS 的这种用法是非标准的,并且与它在 Java SE 中所做的相比非常肤浅.由于某种原因,人们认为 Java EE 中的安全性称为 JAAS,但完全相反。

JASPIC 是 Java EE 6+ 服务器必须创建和插入额外身份验证机制的扩展点。您可以使用它来创建 OAuth、OpenID 等机制。 JASPIC 是关于与用户的交互。它没有提到从 LDAP 或数据库之类的东西中获取用户数据。您可以使用自己的代码或通过调用 JAAS LoginModule 来完成此操作。 JASPIC 确实定义了 JAAS LoginModules 如何以更标准的方式连接到您的自定义机制。太糟糕了,它仍然不是 100% 标准,但至少更好。

JACC 是另一个扩展点,但用于授权机制。您可以使用它以不同的方式进行授权,或者只是审核授权。 JACC 还使您在 web.xml 中定义的所有安全约束对您的代码可用。您可以使用它来预先检查用户是否可以访问页面。与 JASPIC 不同,JACC 很难在您的应用程序中实际激活。您需要弄乱 JVM 参数等