简单来说,有人能向我解释一下JAAS、JACC和JASPIC之间的区别吗?

15

说实话,我已经是一名开发人员有一段时间了,但这是我第一次听说JACC和JASPIC。我知道它们是授权提供程序使用的标准,但它们与JAAS究竟有何不同?在什么情况下我们会选择其中之一?

我进行了一些初步研究,并不是因为我懒得做,而是因为阅读有关JACC和JASPIC的文章让我有点不知所措,而且我需要在最短的时间内学习这个内容,因为我需要在即将到来的一个项目中实现它。只是希望能够快速了解一下。

1个回答

27

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

对于Java EE来说,它并不直接有用,Java EE更多是关于用户级别的安全性(您信任该用户吗)。

一些Java EE服务器可以使用基于JAAS LoginModules的东西进行身份验证,但这种使用方式是非标准的,并且与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参数等。


非常感谢 - 那很直截了当!我正在使用JBoss,它自带JACC - 这应该处理授权。但是关于认证 - 我是否仍应使用JAAS LoginModules进行认证,还是有其他方法?谢谢! - Matthew Cachia
1
@MatthewCachia 只需实现 javax.security.auth.message.module.ServerAuthModule(SAM),就可以实现可移植身份验证。但是,如果您还想以可移植的方式将SAM与JBoss集成,则还需要实现 AuthConfigProvider(加上 ServletContextInitializer作为前者在容器提供的AuthConfigFactory中的注册者)、 ServerAuthConfigServerAuthContext。对于单个SAM保护单个应用程序的普遍使用情况,这些都是相对轻松的作者。 - Uux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接