15

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

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

4

1 回答 1

26

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

它对 Java EE 没有直接用处,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 参数等。

于 2015-03-25T15:30:17.047 回答