我说实话。我已经在很长一段时间内成为了开发人员,但这是我第一次听说JACC和JASPIC。我知道它们是授权提供商使用的标准,但它们与JAAS有何不同?什么时候我们会使用另一个?
我做了一些初步的研究,并不是说我懒得去做。只是阅读有关JACC和JASPIC的文章有点让我感到不知所措,我需要在短时间内了解这一点,因为我需要在我即将开展的一个项目中实现这一点。只是在我对它的理解上寻找一个快速的开始。
答案 0 :(得分:21)
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参数等。