如何为嵌入式码头/弹簧安全启用 HTTP 摘要?

Posted

技术标签:

【中文标题】如何为嵌入式码头/弹簧安全启用 HTTP 摘要?【英文标题】:How to enable HTTP digest for embedded jetty / spring security? 【发布时间】:2011-03-09 06:34:34 【问题描述】:

我有两个小型 http 服务器。一种使用 sun (com.sun.net.httpserver) 服务器,另一种使用嵌入式码头。现在我试图让 HTTP 摘要至少在码头服务器上工作(嗯,这是使用码头而不是 sun httpserver 的原因之一)。无论我使用哪个服务器,基本设置都是通过 Spring IOC 容器完成的。

我不喜欢为此目的使用 servlet(好吧,使用码头我得到 HTTPServletRequest 和 HTTPServletResponse 对象)而且我是 Spring Security 的新手(我只是使用 Spring Security,因为它似乎是最灵活的关于 HTTP 摘要身份验证的方法)。我发现的关于 spring 安全性的所有内容都相当简洁,或者完全面向 servlet/filter。

我想知道哪种方法是为我的服务器启用 http 摘要的最简单方法。如果弹簧安全是答案,如何将弹簧类连接到我的 IOC 容器中。我可以想象处理http摘要需要一些手动操作。只要我有一些开始的提示,这对我来说很好。

【问题讨论】:

【参考方案1】:

看看Spring Security Documentation。您必须配置 DigestFilter 和 DigestFilterEntryPoint。此外,您必须提供UserDetailsService。一个好的 UserDetailsS​​ervice 实现应该是 In-Memory implementation。

其余的配置应该是相当标准的。你可以找到一些“入门”here。

【讨论】:

这个过滤器的东西只能通过web.xml配置,对吧?我没有 web.xml,因为我只想要一个“普通”的网络应用程序。还是我理解错了? 嗯。恐怕您将不得不定义“普通”网络应用程序。没有 web.xml 就没有 webapp 这将是一种替代方案。但这不是我的选择。恕我直言,安全处理与 webapps 无关。而且我不想使用它们,因为我看不到将代码推送到我不需要的 shell 中的好处,因为它依赖于 XML 描述符和部署方式。另一个可行的选择是让功能在下面的层(它所属的层)上工作。这就是我的问题的意图。 您可以使用 Jetty 附带的 ServletHandler 以编程方式将所需的 servlet 设置到 jetty 实例,而无需 web.xml 或其他任何东西

以上是关于如何为嵌入式码头/弹簧安全启用 HTTP 摘要?的主要内容,如果未能解决你的问题,请参考以下文章

如何为特定 url 启用 spring 安全会话管理

Kotlin 数据类:如何为嵌入式文档生成 MongoDB ObjectId

如何为你的WWW站点启用HTTPS?

如何为 Spring Security 启用日志记录?

如何为 Spring Security 启用日志记录?

嵌入式码头热部署