Authentication 如何在AppservPasswordLoginModule(SSL)中获取HttpServletRequest

Authentication 如何在AppservPasswordLoginModule(SSL)中获取HttpServletRequest,authentication,glassfish,jaas,Authentication,Glassfish,Jaas,在我为我的应用服务器(GlassFish 3.1.2.2)开发的定制登录模块中,我使用以下语法来获取HttpServletRequest: PolicyContext.getContext(HttpServletRequest.class.getName()) 而且效果很好 但现在我将服务器配置为仅使用HTTPS,并且相同的指令返回null。 我想这是一个安全限制,但我不确定需要更改什么才能解决这个问题(server.policy?)。 要将其置于上下文中,我需要记录所有登录尝试(有效和无效)

在我为我的应用服务器(GlassFish 3.1.2.2)开发的定制登录模块中,我使用以下语法来获取HttpServletRequest:

PolicyContext.getContext(HttpServletRequest.class.getName())
而且效果很好

但现在我将服务器配置为仅使用HTTPS,并且相同的指令返回null。 我想这是一个安全限制,但我不确定需要更改什么才能解决这个问题(server.policy?)。 要将其置于上下文中,我需要记录所有登录尝试(有效和无效)的IP地址,在模块中获取请求似乎是最明显的解决方案


有人能帮我找出一个解决方案吗?

我不能直接帮你回答你的问题,但你可能需要注意,
PolicyContext
是一个JACC类。它被指定在JACC策略提供者内部工作。你可能想更深入地了解这一点

因此,无法具体保证从GlassFish专有登录模块中获取
HttpServletRequest
是否有效,尽管我确实看到人们更频繁地使用它,而且它通常是有效的。事实上,当您切换到https时它不起作用,这听起来更像是一个bug或疏忽,而不是任何特定的安全限制

一种解决方法是使用JASPIC将登录模块重写为javaee标准auth模块。我也写过关于这个主题的文章,你可以参考一下。在JASPIC中,您可以显式地访问
HttpServletRequest