问题标签 [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.
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 进行授权?
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 实例)调用它的那一刻,主题为空!
我错过了什么??
java - JAAS & JACC:我如何踢出用户?
我们目前正在使用 JBoss EAP 6.4/7.0 采用 JAAS 和 JACC。只是对我们如何应用事物的简要说明:
- 我们
HttpServletRequest.login(...)
用来验证 - 随后,我们使用
HttpServletRequest.logout()
注销。 - 我们有一个 LoginModule 来验证凭据并准备角色。
一切都很好,但是,我的应用程序的一部分必须允许某些用户能够:
- 撤销其他人登录系统的角色,以及
- 将他们踢出任何当前活动的会话。
第一部分很简单,但我很难弄清楚如何使某人的会话无效。有没有办法让我以某种方式获取其他用户的主题/会话并使其无效?
非常感激
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 。@DatabaseIdentityStoreDefinition
IdentityStore
当我启动应用程序并尝试登录时,从 NetBeans 控制台获得了以下信息。
信息:身份验证结果: 来自我的未完成LoginBean
,打印返回的 AuthenticationStatus
.
我的安全配置文件是:
我还包括DatabaseSetup
在应用程序启动时插入用户。该文件是从app-db sample复制的。
我的完整代码可以在这里找到。
@CustomFormAuthenticationMechanismDefinition
在项目中使用和@DatabaseIdentityStoreDefinition
无缝的正确方法是什么?
更新,我刚刚尝试使用@FormAuthenticationMechanismDefinition
,@DatabaseIdentityStoreDefinition
它有效,代码在这里。所以这是一个错误@CustomFormAuthenticationMechanismDefinition
。
java - 如何从 web.xml 中检索权限
我想知道是否有更好的方法(无需反射)来获取特定 URL 和角色的 java.security.Permissions。
例如:
将使用以下约束(web.xml):
我在下面写的代码效果很好。我不喜欢的是我必须使用反射从 DelegatingPolicy.getInstance() 调用 getContextPolicy 并从 ContextPolicy 调用 getPermissionsForRole。
我以编程方式从 web.xml 中读取了检索安全约束,但发现它不是很有用。
任何意见,想法都非常欢迎。谢谢!
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
还是我错过了什么?
谢谢!
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,现有的单体应用中没有授权要求。