问题标签 [jsr196]
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 - 如何覆盖 glassfish 中的 j_security_check?
我目前FORM
在 glassfish v2.1 中使用基于身份验证来登录用户,它工作正常。我想切换到ProgrammaticLogin
并且我希望能够获取最初请求的 URL(即在重定向到登录页面之前)并在我的编程登录代码中使用它,以便在身份验证后将用户重定向回请求的页面。
我已经看到了源代码j_security_check
——在我的例子中是FormAuthenticator
(catalina 代码库),它将初始请求保存在会话中的一个SavedRequest
对象中,但该会话是一个StandardSession
而不是HttpSession
所以没有直接的方法来访问它。
还是我应该将身份验证机制从FORM
其他东西更改?
谢谢!
java - 如何在 GlassFish 中通过 JSR 196 身份验证获得角色?
我想在 GlassFish 3 中使用符合JSR 196的自定义身份验证模块。接口 javax.security.auth.message.ServerAuth 具有以下方法:
AuthStatus 可以是几个常量之一,例如 FAILURE 或 SUCCESS。
问题是:如何使用 JSR 196 从“角色数据库”中获取角色?
示例:服务器接收带有 SSO 令牌(例如 CAS 令牌)的请求,检查令牌是否有效,使用通过 JDBC 从数据库或通过 http 从 REST 服务获取的角色填充远程用户对象。
角色获取是否在 JSR 196 的范围内?这怎么可能实施?
我是否必须将 JSR 196 与JSR 115一起使用才能使用自定义身份验证和自定义角色源?
weblogic - 使用 Jaspic/JSR196 模块的 weblogic 中的会话失效
我们开发了一个 jsf web 应用程序,其中包含一个由 webapp 以编程方式注册的 Jaspic/JSR196 模块。
我们按照以下博客中的说明来实现这一点: http: //arjan-tijms.blogspot.pt/
该解决方案适用于验证用户:我们有一个接收用户名和密码并调用 request.authenticate 方法的 bean。该请求在服务器身份验证模块 (SAM) 中得到验证,并且用户通过了身份验证。
问题是,在 webapp 中导航时,会话似乎经常失效,这使得用户被重定向到登录页面。当 request.getUserPrincipal 在访问受保护的资源时返回 null 时,SAM 模块实现将用户重定向到登录页面。我们没有找到这种行为的模式。
在分析日志时,我们发现了一些抛出的异常:(有时这些异常会显示在网页中。)
HttpSession 无效
会话失效正在使用不同的线程进行
响应已提交
以下日志条目显示未找到有效会话,因此用户被重定向到登录页面:
似乎容器使 Http Sessions 无效。但我们无法理解为什么。有什么帮助吗?
java - Glassfish 中的服务器身份验证模块转发
我找到了为 Glassfish 开发自己的服务器身份验证模块 (SAM) 的指南:http: //docs.oracle.com/cd/E18930_01/html/821-2418/gizel.html
验证某些凭据(例如在 HTTP Auth 标头中)似乎很简单,但我的问题是:
我可以开发我的 SAM 以在用户未登录的情况下将其转发到特定页面吗?
这是指南中的示例:
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 - 是否可以在 glassfish 中以编程方式识别服务器身份验证模块的存在
我在 Glassfish 中启用了服务器身份验证模块 (JSR196)。该模块按预期工作,但是我需要以编程方式确定 servlet 中是否存在身份验证模块。
有什么方法可以使用 java 检查身份验证模块的存在吗?