问题标签 [jacc]

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 投票
0 回答
226 浏览

java - Java EE 安全概念

我需要使用 Java EE 6 (Glassfish Server) 创建一个应用authentication程序authorization。我阅读了很多关于 Java EE 6 安全性的内容,只是想问一下我的概念是否正确:

公司中的每个用户都有一个帐户"X123456"。我想用这个LDAP Authentication

应用程序---> LDAP

所以,我可以使用公司的基础设施来授权用户。

但是我想控制我的应用程序中的角色。所以,我想使用JACC. 因此,我将创建一个具有用户到角色映射的数据库,

Example:“X123456 -> 管理员”。

好处是:

  • 我不需要存储任何密码
  • 我可以在我的应用程序中创建一种管理面板,我可以在其中动态地将现有角色设置为用户

你认为这在技术上是可行的还是好的做法?

备选方案:是否可以在 Active Directory 中定义角色(管理员、用户)并通过 LDAP 进行查询?所以我可以将我的用户到角色映射外包到活动目录中。

更新:

  • 对于身份验证,我目前使用 LDAP-Realm(用户、密码)。
  • 对于授权,我想使用数据库(角色名、用户)。但是我不知道如何告诉我的应用程序使用数据库进行授权。如果我要使用 JDBC-Realm,我可以指定 Group/Role 表和列。有没有办法告诉我的应用程序只使用 JDBC-Realm 进行授权?
0 投票
0 回答
203 浏览

java - JBoss EAP PolicyContext.getContext 返回 null

我正在从 JBoss EAP 6.4 升级到 7.1,但我遇到了一些关于主题管理的技术问题。

一些上下文

我的应用程序是一个 EAR 文件,其中包含:

  • 一个网络模块
  • 几个带有无状态会话 bean (SLSB) 的 EJB 模块
  • 一个打包以上所有内容的EAR文件

身份验证是原始的:用户名-密码凭证被传递到 SLSB 之一,SLSB 依次调用

问题

我的应用程序偶尔会在不同的执行点检索主题——从我的 Web 应用程序、我的 EJB 或任何地方。我通常习惯使用Subject.getSubject(...),但这一直返回 null 。

我被要求使用PolicyContext.getContext("javax.security.auth.Subject.container")它,它确实返回了经过身份验证的主题,但只在loginContext.login();被调用的地方。当我从其他任何地方(包括从同类型的不同 SLSB 实例)调用它的那一刻,主题为空!

我错过了什么??

0 投票
1 回答
355 浏览

java - JAAS & JACC:我如何踢出用户?

我们目前正在使用 JBoss EAP 6.4/7.0 采用 JAAS 和 JACC。只是对我们如何应用事物的简要说明:

  • 我们HttpServletRequest.login(...)用来验证
  • 随后,我们使用HttpServletRequest.logout()注销。
  • 我们有一个 LoginModule 来验证凭据并准备角色。

一切都很好,但是,我的应用程序的一部分必须允许某些用户能够:

  • 撤销其他人登录系统的角色,以及
  • 将他们踢出任何当前活动的会话。

第一部分很简单,但我很难弄清楚如何使某人的会话无效。有没有办法让我以某种方式获取其他用户的主题/会话并使其无效?

非常感激

0 投票
1 回答
486 浏览

jakarta-ee - AuthenticationStatus 在使用自定义表单和基本身份存储时返回 NOT_DONE

@CustomFormAuthenticationMechanismDefinition我花了几天时间将自己更新到 Java EE 8,我在使用和@DatabaseIdentityStoreDefinition一起使用时遇到了一个问题。

我正在使用 Glassfish v5、NetBeans 9 nightly 和 Java 8。

我所做的只是想更新security-soteria(Java EE Security 1.0 RI)测试文件夹中的app-mem-customform 示例,而我所做的更改是用于替换基于内存的 dummy 。@DatabaseIdentityStoreDefinitionIdentityStore

当我启动应用程序并尝试登录时,从 NetBeans 控制台获得了以下信息。

信息:身份验证结果: 来自我的未完成LoginBean,打印返回的 AuthenticationStatus.

我的安全配置文件是:

我还包括DatabaseSetup 在应用程序启动时插入用户。该文件是从app-db sample复制的。

我的完整代码可以在这里找到。

@CustomFormAuthenticationMechanismDefinition在项目中使用和@DatabaseIdentityStoreDefinition无缝的正确方法是什么?

更新,我刚刚尝试使用@FormAuthenticationMechanismDefinition@DatabaseIdentityStoreDefinition它有效,代码在这里。所以这是一个错误@CustomFormAuthenticationMechanismDefinition

0 投票
2 回答
357 浏览

java - 如何从 web.xml 中检索权限

我想知道是否有更好的方法(无需反射)来获取特定 URL 和角色的 java.security.Permissions。

例如:

将使用以下约束(web.xml):

我在下面写的代码效果很好。我不喜欢的是我必须使用反射从 DelegatingPolicy.getInstance() 调用 getContextPolicy 并从 ContextPolicy 调用 getPermissionsForRole。

以编程方式从 web.xml 中读取了检索安全约束,但发现它不是很有用。

任何意见,想法都非常欢迎。谢谢!

0 投票
1 回答
513 浏览

ejb - IllegalArgumentException:找不到密钥“javax.security.auth.Subject.container”的处理程序

我基本上遵循本教程: https ://www.ibm.com/developerworks/java/library/j-javaee8-security-api-4/index.html?ca=drs-

我的开发环境:TomEE 8.0 M1 Plume

pom.xml

应用配置:

测试服务程序:

转到http://localhost:8080/test,我得到这个异常:

我来自 Spring 和 Spring Security 背景,但对 CDI 和 EJB 不熟悉。

你能告诉我如何配置它handler还是我错过了什么?

谢谢!

0 投票
2 回答
54 浏览

java - Wildlfy 26:java.lang.IllegalArgumentException:javax.security.jacc.api 处的未知处理程序密钥

我正在尝试将单体应用程序从 Wildfly 23 升级到 Wildfly 26。

最初,该应用程序在standalone.xml

用于安全的旧配置

在 Wildfly 迁移指南的指导下 -迁移指南

现在在新的 Wildfly 26 配置中如此表达

完整(编辑)配置在这里 - https://pastebin.com/kEM5gN3C

Jboss-xml

此配置适用于 Web 应用程序上的不安全页面,但尝试使用 JSF 登录页面登录。

它抛出这个致命错误:

谷歌搜索显示此错误与其他应用程序服务器(如 TomEE 等)有关。

我做过的事情:

  • 升级了与 Java EE(EJB、Omnifaces、JSFUtils)相关的所有 Maven 依赖项
  • 禁用 JACC(这不会引发任何错误但我无法登录,它只是在成功验证后将用户踢回登录页面)

架构

代码库有:

  • AuthenticationMechanism 实现 HttpAuthenticationMechanism
  • Authenticator 实现 IdentityStore
  • AuthenticatedUser(其中包含用户信息的可序列化 bean)

调用SecurityContext的注入bean时会爆炸getCallerPrinciple()

在此处输入图像描述

作为一个非 Java EE 的人,了解实际发生的事情并指出如何解决这个问题会很有帮助?

  • 这是 Wildfly 26 的问题吗?
  • 这是配置错误吗?
  • 这是 Elytron 设置的问题吗?
  • 是否需要实现一些代码?

我不明白为什么我需要 JACC,现有的单体应用中没有授权要求。