2

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

PolicyContext.getContext(HttpServletRequest.class.getName())

它工作正常。

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

有人可以帮我找出解决方案吗?

4

1 回答 1

0

我无法直接帮助您解决您的问题,但您可能需要注意这PolicyContext是一个 JACC 课程。它被指定在 JACC 策略提供程序中工作。你可能想看看我写的一篇文章,它更深入地解释了这一点。

因此,无法HttpServletRequest从 GlassFish 专有登录模块中获取作品,尽管我确实看到人们更频繁地使用它并且它通常可以工作。当您切换到 https 时它不起作用的事实对我来说更像是一个错误或疏忽,而不是任何特定的安全限制。

一种解决方法是使用 JASPIC 将登录模块重写为 Java EE 标准身份验证模块。我还写了一篇关于该主题的文章,供您参考。在 JASPIC 中,您明确有权访问HttpServletRequest.

于 2014-04-11T17:34:16.287 回答