基于 Java EE 的 Web 应用程序服务器中的 JAAS 安全性是不是依赖?

Posted

技术标签:

【中文标题】基于 Java EE 的 Web 应用程序服务器中的 JAAS 安全性是不是依赖?【英文标题】:Is JAAS security in Java EE based web application server dependent?基于 Java EE 的 Web 应用程序服务器中的 JAAS 安全性是否依赖? 【发布时间】:2016-07-12 04:26:57 【问题描述】:

我是 Java EE 开发的新手,但我在这方面进展顺利, 我对我的应用程序的安全部分有点困惑。

我已经阅读了几篇关于如何在我的 Java EE Web 应用程序中实现 JAAS 安全性的文章。这是我阅读和理解的内容,其他人都不清楚: http://uaihebert.com/user-login-validation-with-jaas-and-jsf/

这个例子很棒,但它配置了 JBoss 服务器,我没有使用 JBoss,我也不打算这样做。如果我要使用 JAAS,是否需要配置我正在运行(开发)的本地 Web 服务器?也许有些事情我对 JAAS 不太了解? 如果我按照这个例子使用 JBoss 并像他们一样配置它。当我将我的 Web 应用程序部署为一个 war 文件时,我将这个 war 文件上传到一个 tomcat 服务器上,它仍然是安全的吗?

任何帮助/指导将不胜感激! 谢谢!

【问题讨论】:

应该如何配置 jaas 确实取决于服务器,并且与 jsf 没有任何关系。这就是为什么(至少我认为)没有起飞 @Kukeltje 谢谢你的回复 :) 我明白了,所以如果我在 jboss 上开发我的应用程序然后部署一个战争它不会在任何其他服务器上得到保护?这就是我从您的“服务器依赖”中理解的,对吗?再次感谢 相关:***.com/q/35994641 @Uux 你的意思是 JACC ;) 这真的不是那么糟糕而且是一个有趣的基础。只是没有人进一步推动它。它得到了维护,但没有现代化。真可惜。它最缺少注册 JACC 提供者的工厂。 @Uux 在 EG 列表之后,我得到的印象是,在 Java EE 的各个规范中,JAAS、JASPIC、JACC 和安全部分背后的原始人根本没有人在场。尤其是第一个月的邮件,看起来人们“只是”想要 DeltaSpike 之类的东西(在 CDI 中做所有事情,忽略现有的东西)。恐怕没有 JACC MR 提供工厂,JSR 375 无法使用 JACC。因为Oracle现在处于一种关闭模式我也担心我们不会看到那个MR ???? 【参考方案1】:

JAAS 安全性在 Java EE 中不存在。 JAAS 是一个 Java SE 框架,用于在类级别保护资源。您可以使用它来限制您下载的代码(如 Applet)可以在您的计算机上执行的操作。

使用 Java EE,情况正好相反。您不会为单个用户(您在计算机上)下载未知代码,但未知用户会登录到您的代码(您在服务器上运行)。

由于一些服务器使用术语 JAAS 来表示最近称为“身份存储”(存储用户和角色的东西,如 ldap)的特定于服务器的实现,所以会发生一些混淆。

但是:

仅使用了令人尴尬的一小部分 JAAS(某些类型,例如 LoginModule) 声称使用 JAAS 的服务器都以不同的方式执行此操作,以至于您只会想知道他们为什么一开始就为它烦恼 到目前为止,并不是每个服务器都使用 JAAS。 Tomcat、Jetty、Resin、Liberty 和 WebSphere 根本不使用它。

【讨论】:

遗憾的是,javax.security.auth.login 往往是在讨论 Java EE 中的身份验证时首先提出的问题。但是 JAAS 对 Java EE 来说并不完全陌生。正如您所说,通常是基于CodeSource 的授权(JAAS 还添加了基于Principal 的授权)。实际上,至少从 1.4 开始,总括规范就包含了一些关于 JAAS 的参考,而连接器规范则将整个部分集中在它上面。总而言之,JAAS 仍然可以被视为 Java EE 的一部分,尽管它不是应用程序开发人员可以直接依赖的。 非常感谢,现在我明白了:) @Uux 总括规范中有一个关于安全性的章节,其中使用了您在其他地方不会遇到的概念和术语。就好像作者在 375 年前设想了一个 JSR,但它从未实现。连接器规范确实有一些有趣的部分。 JAAS 的某些方面出现在 EE 中,但与人们的想法不同,而且人们称之为 JAAS 的很多东西(如 web.xml 中的约束)根本不是 JAAS。

以上是关于基于 Java EE 的 Web 应用程序服务器中的 JAAS 安全性是不是依赖?的主要内容,如果未能解决你的问题,请参考以下文章

java EE是啥?

在没有 Java EE 应用服务器的情况下使用 Web 服务在 C# 和 Java 之间进行互操作?

Java ee 课程设计----基于web的考勤管理系统

3月28日 java web 学习

各种容器与服务器的区别与联系:Servlet容器WEB容器Java EE容器应用服务器WEB服务器Java EE服务器

请问Java ee与Javaweb 有啥区别