【问题标题】:In simplest terms, can anyone explain to me the difference between JAAS, JACC and JASPIC?简而言之,谁能向我解释 JAAS、JACC 和 JASPIC 之间的区别?
【发布时间】:2015-05-28 11:58:51
【问题描述】:

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

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

【问题讨论】:

    标签: jakarta-ee java-ee-6 jaas jaspic jacc


    【解决方案1】:

    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 参数等。

    【讨论】:

    • 非常感谢 - 直截了当!我正在使用开箱即用的 JACC 附带的 JBoss - 这应该需要授权。但是关于身份验证呢?我应该仍然使用 JAAS LoginModules 进行身份验证还是有别的办法?谢谢!
    • @MatthewCachia A javax.security.auth.message.module.ServerAuthModule (SAM) 是您必须实现的所有可移植身份验证。但是,如果您还打算以可移植方式将您的 SAM 与 JBoss 集成,则您还必须实现一个 AuthConfigProvider(加上一个 ServletContextInitializer 作为前者的注册人,并使用容器提供的 AuthConfigFactory),一个 @ 987654325@ 和ServerAuthContext。对于单个 SAM 保护单个应用程序的普遍用例,这些对作者来说相对容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 2011-01-09
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多