使用 Spring Security 在同一个 URI 映射上同时支持 Basic 和 Digest 身份验证

Posted

技术标签:

【中文标题】使用 Spring Security 在同一个 URI 映射上同时支持 Basic 和 Digest 身份验证【英文标题】:Support both Basic and Digest authentication on the same URI mapping with Spring Security 【发布时间】:2012-01-01 02:14:56 【问题描述】:

我有一个用于保护 RESTful 服务的用例,但我不确定它是否可以实现 - 基本上我希望同时设置 Basic 和 Digest 身份验证。在链中设置两个过滤器应该相对容易,但我不确定如何处理入口点 - 据我所知,两种类型的身份验证有 2 个入口点,但它应该的方式如果授权标头带有基本或摘要身份验证逻辑,则可能的工作是调用正确的入口点。

我知道在 Spring 3.1 中你可以有多个元素,但我认为这在这种情况下没有帮助,因为这两个身份验证选项应该在同一个映射上得到支持,而映射似乎是唯一的方法可以区分这2个元素。

我也知道这个问题: Spring Security 3.x: How can I enable both BASIC and DIGEST authentication? 但这似乎并没有解决多个入口点的问题。

有什么我忽略了,或者没有完全理解的东西吗? 任何帮助表示赞赏。 谢谢。 欧根。

【问题讨论】:

【参考方案1】:

我已经解决了这个问题 - 我最终做的是使用摘要身份验证(过滤器和入口点)并在链中的摘要过滤器之后添加基本过滤器。这样,对于具有身份验证凭据(基本或摘要)的请求,正确的过滤器会选择它。对于匿名请求,摘要入口点将开始,并提示客户端输入摘要凭据。

【讨论】:

以上是关于使用 Spring Security 在同一个 URI 映射上同时支持 Basic 和 Digest 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

手动设置spring security auth记住我

Spring Security入门

为啥应用程序看不到 Spring Security 中的角色(禁止)

如何让spring security不拦截第三方的对接方法

Spring Security教程:自定义表结构

Spring Security Ldap,只登录指定组中的用户