问题标签 [jaas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2204 浏览

java - 带有 LDAP 密码策略的 JAAS

用户正在使用 JAAS(在 Glassfish 2.1 上)访问受限制的 Web 应用程序。使用了 LDAPRealm,并且从 LDAP 成功执行了身份验证。应该为用户安装密码策略,以便他们被迫更改密码,具有一定复杂性/长度的密码,密码失败和最后 N 个密码应该被检查。使用的 LDAP 服务器(OpenDS)的密码策略支持这一切,但是在我们使用的 JAAS FORM 登录中如何接收这种信息完全不明显,因此信息(即“请更改您的密码”)可以显示给用户。

你有什么想法如何去实现这个?仅使用数据库不是一种选择,用户需要在 LDAP 中。不明显的是是完全使用 LDAP 密码策略,还是将其全部编程在我们的 Web 应用程序中。我想避免这种情况并使用 LDAP 的本机密码策略。

谢谢你的回答和最好的问候,博佐

0 投票
1 回答
2420 浏览

authentication - JAAS - isUserInRole 为 Tomcat 中的所有角色返回 false

问题来了,

JAAS 领域连接数据库正常,用户名和密码匹配,会话通过身份验证。但是,似乎没有一个角色进入校长。Tomcat 的 isInUserRole 对每个角色都返回 false,并且 tomcat 安全性也看不到它们。

这是 Server.xml 中的领域配置

这是login.config

在 catalina.properties 我指的是这样的配置

启动应用程序时,我确实在调试输出中收到以下消息,不知道为什么所有类都应该可以被服务器访问

任何帮助,将不胜感激。我已经阅读了一个又一个的帖子和一个又一个的教程,而那些确实有这个问题的人,没有发布解决方案。

顺便说一句,我使用的是 Tomcat 5.5,不是我的选择,遗留代码,你知道它是怎么回事!我还使用 OWASP 登录模块 (OWASPJaasLoginModule.jar)。此 jar 文件位于 server/lib 目录中。

0 投票
2 回答
4459 浏览

java - 在 Grizzly 上使用 JaaS 和 Jersey

我试图找到一种简单、灵活的方式将 JaaS 身份验证添加到 REST。我发现了一篇认为引导我走向正确方向的帖子(参见 StevenC 的回答)。听起来 servlet 容器负责安全性,而不是 Jersey 代码本身。我喜欢这个想法,但需要一些关于实施的指导。

Grizzly 是我的 servlet 容器,我想将其配置为使用 JaaS 进行身份验证。现在,一个简单的用户名/密码组合就可以了,直接在代码中硬编码用户名/密码对就可以了。只要它使用 JaaS,我们就可以稍后细化这些细节。

至于通过 HTTP 发送的内容,我认为存储 cookie 将是使这一切正常工作的最简单方法。不惜一切代价让身份验证垃圾远离我的泽西代码。

到目前为止,这是启动 Grizzly 的代码:

如果整个过程有效,检查用户权限的最佳方法是什么?我可能希望我的 REST 代码在某些点实际验证权限。我什至走在正确的轨道上吗?有没有更简单的方法?指向教程的链接将是一个很好的答案。即使是像“我做到了,而且奏效了”这样的回答也会给我一个温暖的模糊感,我正朝着正确的方向前进。

谢谢你的帮助。

编辑:对 StevenC 评论的一些澄清:

  • 您还想使用 servlet 过滤器来保护您的资源吗?我将使用任何可以将身份验证细节与泽西代码分开的方法。它不必是 servlet 过滤器。
  • “将其配置为使用 JaaS”是什么意思?最初的计划是使用 JaaS 保护当前的 API。下一阶段将是使整个 API 在线可用。围绕 API 调用使用 Jersey 包装器似乎是有意义的,但让 Grizzly 处理身份验证。我相信,那时灰熊必须与 JaaS 进行交互。
  • 您是否认为应该有一些配置可以简单地导致 grizzly 保护您的资源?我正在考虑对用户进行身份验证和基于角色授权用户访问资源的两步过程。这个想法是让 Grizzly 处理身份验证(使用 JaaS)和 Jersey 处理授权。
  • “我认为没有必要在 RESTful 资源中使用 cookie。” 删除 cookie 的使用会很棒,但是如何实现呢?系统需要知道用户是否经过身份验证。我宁愿不要求他们为每次通话传递用户名/密码/等。甚至每次调用都将会话令牌作为参数传递似乎“丑陋”。

另外,请注意我对 REST 还很陌生。我已经做 SOAP 几年了,所以我可能有一种“SOAP 偏见”,这可能使我对每个人都使用的一些明显、简单的解决方案视而不见。如果有更简单的方法,欢迎分享。我只是想尽可能多地学习。

0 投票
1 回答
929 浏览

security - 从通用访问卡 (CAC) 发送完整的链?

我正在尝试使用用户 CAC 卡上的证书从 Web 服务客户端 (Axis2) 启用 SSL 通信。像魅力一样工作......直到网络服务器启用 CAC。此时,SSL 连接被拒绝,并显示未包含链中其他证书的错误消息。

通过将它添加到 security.properties 文件或以编程方式创建它,我已确保提供程序可用。

我目前的方法是简单地设置系统属性: System.setProperty("javax.net.ssl.keyStore", "NONE"); System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");

我从这个问题/答案中了解到,这种方法只发送“最终实体”证书。显然我需要实现我自己的 X509KeyManager。这对我来说是新的领域,任何人都可以提出一个好的参考或提供如何做到这一点的样本吗?

感谢您的帮助。

0 投票
3 回答
2207 浏览

websphere - Websphere 6.1 JAAS 注销

我有一个使用 JAAS 的 WAS 6.1 上的 WebApplication 已经在工作。认证授权有序进行。但是我的注销页面没有取消对主体的授权。此应用程序在 JBoss 和 Glasfish 上正常工作,但在 WAS 上不能正常工作。

我的注销页面只是一个包含此内容的简单 JSP。

我错过了什么吗?我宁愿不使用 Webpshere 的任何特定 API,但如果绝对需要,我会的。

0 投票
2 回答
1870 浏览

java - 使用自定义 LoginModule 登录 Jackrabbit

我正在尝试编写一个使用 Jackrabbit 存储库对用户进行身份验证的 LoginModule。但是,我希望它检查存储在存储库本身中的凭据。所以问题是,在我的 LoginModule 中,我必须再次连接到存储库,使其成为无限循环。有什么我可以做的吗?

0 投票
2 回答
938 浏览

java - 使用 HTTPS 和 JAAS 上传 Flex 文件?

我们正在尝试将文件从 flex 客户端上传到 Java EE 应用程序。

  • 在完整的 HTTPS 环境中
  • Java EE 服务器是 JBoss 5
  • 使用 BlazeDS“自定义”身份验证(通过弹性表单输入用户名和密码)
  • 使用 BlazeDS 每个会话身份验证

在常规的 AMF 调用中,我们可以访问用户主体并使用角色机制。

但是,在我们的上传 servlet 中,我们无权访问用户主体。

如何解决这个问题?

0 投票
1 回答
518 浏览

java - 如何使用 JAAS 向 flex 客户端指示失败的身份验证原因?

我们正在使用:

  • JBoss 5
  • 弹性 SDK 3.5
  • BlazeDS 3,具有集成身份验证(通过 JAAS 和 JBossSX)

登录失败总是由相同的故障代码指示给 flex 客户端:Client.Authentication

但是,底层 JAAS LoginModule会引发特定的javax.security.auth.login.LoginException子类。

我们如何将失败的登录原因传播给 flex 客户端?

0 投票
4 回答
148131 浏览

jsf - 使用 j_security_check 在 Java EE / JSF 中执行用户身份验证

我想知道当前的方法是什么关于使用JSF 2.0(以及如果确实存在任何组件)和Java EE 6核心机制(登录/检查权限/注销)的Web应用程序的用户身份验证,用户信息保存在JPA中实体。Oracle Java EE 教程在这方面有点稀疏(仅处理 servlet)。

没有使用整个其他框架,例如 Spring-Security (acegi) 或 Seam,但如果可能的话,希望能坚持使用新的 Java EE 6 平台(Web 配置文件)。

0 投票
2 回答
11340 浏览

java - 如何针对 Java 中的服务器验证 Kerberos 票证?

我们正在使用 JAAS 在使用 Windows Kerberos 票证缓存的 Java 应用程序中启用单点登录。我们的 jaas.conf 配置文件如下所示:

这样,我们就可以创建一个 Jaas LoginContext 并成功获取用户的 Kerberos 票证。我们使用 JMI 将此票证发送到服务器应用程序。但是,我们无法在服务器上验证 Kerberos 票证实际上是由我们的 Active Directory 创建的。

目前,我们通过简单地检查服务器主体 (KerberosTicket.getServer()) 名称是否在领域部分中有我们的域名来对票证进行非常不安全的验证。但当然,任何人都可以使用相同的域名设置自己的 Kerberos 服务器,并使用该票证来启动应用程序。

我发现的一个想法是使用 Kerberos 票证针对 Active Directory LDAP 进行身份验证。不幸的是,我们使用 Windows 7 并重新使用 Kerberos 票证对 LDAP 进行身份验证仅在设置注册表条目时有效(请参阅http://java.sun.com/j2se/1.5.0/docs/guide/security/jgss /tutorials/Troubleshooting.html,搜索 allowtgtsessionkey)。这对我们的用户来说是不可接受的。

有什么方法可以根据我们的 Active Directory 服务器验证票证吗?我怀疑有一种方法可以检查 KerberosTicket.getServer() 票证是否等于我们服务器的票证,但我不知道该怎么做。更新: KerberosTicket().getServer() 只返回一个 KerberosPrincipal,它只包含服务器票证名称和领域,因此它不适合验证。

谢谢你的帮助,memminger