问题标签 [jaspic]
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 - 在 WebSphere 8.5 上使用 JASPIC auth 模块
我有一个 JASPIC 身份验证模块,它在 GlassFish、WildFly 和 WebLogic 上运行良好。
现在我们有一个使用 WebSphere 8.5 的新客户,我无法让 auth 模块在那里正常运行。
问题是 WebSphere 不接受 auth 模块放在 CallerPrincipalCallback 中的用户名。我们其他支持的服务器只是接受这一点,但 WebSphere 出于某种原因认为它需要执行一些额外的检查。
在调查了这个问题后,我偶然发现了这个问题:https ://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014937852
这完全描述了我的问题,但那里没有给出解决方案。
我怎样才能让 WebSphere 只处理 CallerPrincipalHandler 并像所有其他服务器一样接受任何用户名?
java - Glassfish 中的服务器身份验证模块转发
我找到了为 Glassfish 开发自己的服务器身份验证模块 (SAM) 的指南:http: //docs.oracle.com/cd/E18930_01/html/821-2418/gizel.html
验证某些凭据(例如在 HTTP Auth 标头中)似乎很简单,但我的问题是:
我可以开发我的 SAM 以在用户未登录的情况下将其转发到特定页面吗?
这是指南中的示例:
jakarta-ee - 简而言之,谁能向我解释 JAAS、JACC 和 JASPIC 之间的区别?
我会诚实的。我做开发人员已经有一段时间了,但这是我第一次听说 JACC 和 JASPIC。我知道它们是授权提供者使用的标准,但它们与 JAAS 究竟有何不同?我们什么时候会使用其中一个?
我做了一些初步的研究,并不是我懒惰去做。只是阅读有关 JACC 和 JASPIC 的文章让我有点不知所措,我需要在尽可能短的时间内了解这一点,因为我需要在我即将进行的项目中实现这一点。只是在我对它的理解上寻找一个跳跃开始。
java - JASPIC JDBC领域身份验证的“注册新用户”解决方案是什么?
我创建了自己的 JDBC 领域(使用 WildFly 8.2),如JavaEE 7 教程的第50.3段所述。我的理解是 JDBC 领域身份验证意味着服务器读取和检查用户凭据,应用程序甚至不知道 auth-reserved DB 的坐标。
对于“新用户注册”,我唯一能想象的就是从我的应用程序内部实现一个经典解决方案:访问 auth DB,检查选择的用户名是否已经存在,在表中插入行......但没有这是否违反了“容器管理身份验证”的整个范式,并且可能会插入安全漏洞?
是否有一些我忽略的服务器实现的机制?
jakarta-ee - Jaspic 模块未将主体传播到 JBoss 7.4 中的本地 EJB
我有一个自定义的 JSR-196 模块,它基本上委托给一个服务,该服务将角色委托给 OAuth“授权”调用。
它确实可以从 servlet 工作(request.getUserPrincipal() 工作正常)。
它不会传播到 EJB 调用,其中 SessionContext.getCallerPrincipal() 返回具有“匿名”而不是预期用户名/角色的 SimplePrincipal。
MycompanyPrincipal 是一个简单的类,具有简单的 getName() 和一些自定义属性。
似乎 SubjectInfo.getAuthenticatedSubject() 没有主体。
我设法为此做出了一个丑陋的解决方法,请参阅下面的“// WORKAROUND”。
尽管如此,我还是想以正确的方式来做(如果可能的话,甚至是标准/便携式)。
这是我在standalone.xml 中定义我的安全域的地方:
这是我的 jboss-web.xml:
该模块本身是我的应用程序的一部分(我的战争中的一个罐子)。EJB 在其他 JAR 中定义,也最终在 WEB-INF/lib 中。
这是我的模块(将 ejb 调用更改为静态方法调用):
java - 如何在 JASPIC 中保存经过身份验证的用户?
我开发了一个安全认证模块 (SAM) 并实现了该validateRequest
方法。我还有一个简单的 webapp 配置为使用这个 SAM。
在我的validateRequest
方法中,我检查了 clientSubject 并设置了CallerPrincipalCallback
一个硬编码的用户名和一个GroupPrincipalCallback
硬编码的组名:
我注意到每次在我的 web 应用程序中刷新 servlet 时,客户端主题都是空白的,logger.debug("Client: {}", clientSubject);
:
是否可以以某种方式“保存”一个主题,以便将该主题附加到会话中,并且我每次都可以简单地跳过登录同一个用户?
编辑我想我找到了一种方法,方法是手动将其存储在HttpSession
:req.getSession().setAttribute("subject", user);
不漂亮,但它有效。
java - Wildfly 中的 JASPIC 客户端登录
我有一个 Java EE Web 应用程序,它在我的 EJB 上使用 JASPIC 和 @RolesAllowed 注释进行保护。我使用托管执行器服务来运行许多任务。
但是,这些任务不会以任何用户身份运行,因此在尝试访问我的 EJB 时出现权限被拒绝错误。我试过使用 @RunAs 注释,但这似乎不起作用。
如何以编程方式进行身份验证?
我有抽象类
和一个具体的类,然后我将任务提交给托管执行器服务
我已经尝试将@RunAs 放在两个类上,但都不起作用。
jakarta-ee - 自定义ServerAuthModule(loginModule),在哪里散列密码?佳士得
我正在尝试实现一个登录模块,以便我可以在我的网络应用程序上执行“记住我”功能,并使用 bcrypt 对我的密码进行哈希处理。为了构建我使用本教程的类。但是,在实施此操作后我没有设法连接。db 中的密码目前通过 SHA-256 进行哈希处理,我怀疑这就是原因。
我像这样登录(在实现自定义登录模块之前确实有效):
同样在我的页面上,我曾经有一个注册和一个登录按钮,只有当用户为空时才会显示,否则我的用户名在顶部。现在我实现了这个,就像用户连接为“匿名”(所以在页面顶部有“你作为匿名连接”。为了防止这种情况,我做了一个临时修复:
我试过了 :
但是没有用户,所以我得到了一个 npe。我也不确定该怎么做。
wildfly - 如何在 WildFly 中设置应用级 SAM
我之前在 Glassfish 上有过一些代码,但我想将它移植到 WildFly。
但是,我似乎无法让 WildFly 调用该模块。初始化ServletContextListener
模块如下
"HttpServlet"
不是 Glassfish 特定的,似乎在https://github.com/wildfly/wildfly/blob/master/undertow/src/main/java/org/wildfly/extension/undertow/security/jaspi/JASPIAuthenticationMechanism.java 中被引用?来源=cc
Glassfish 不需要<logon-config>
阻止web.xml
并且在 WildFly 中放置任何变体都不起作用(如预期的那样)
我怀疑的另一个地方是我如何计算应用程序上下文标识符。对于 Glassfish 我有
WildFly 会有所不同吗?虽然我在https://github.com/rdebusscher/secSpikeWeb/blob/master/src/main/java/org/omnifaces/security/jaspic/core/Jaspic.java#L300中也看到了类似的代码
我也试过添加到standalone.xml
这个块
并设置<default-security-domain value="jaspi"/>
但是它没有任何效果,并且在模块中放置断点也没有表明它被命中。
此外,在WildFly中,我找不到一种方法来执行以下操作,glassfish-web.xml
但这可能是另一个问题
代码相当大,但它的要点可以在
https://github.com/trajano/openid-connect/tree/openid-connect-1.0.1/openid-connect-jaspic-module
和
https://github.com/trajano/openid-connect/tree/openid-connect-1.0.1/openid-connect-jaspic-sample
注意我在应用程序级别寻找它,而不是设置全局服务器 JASPI。
java - 是否可以在 glassfish 中以编程方式识别服务器身份验证模块的存在
我在 Glassfish 中启用了服务器身份验证模块 (JSR196)。该模块按预期工作,但是我需要以编程方式确定 servlet 中是否存在身份验证模块。
有什么方法可以使用 java 检查身份验证模块的存在吗?