将验证码与Spring Security集成

16

如何将SpringSecurity与验证码集成是合适的方式?

我有以下用例: 当用户尝试登录时,如果失败了N次,则会显示验证码,因此身份验证将使用三个参数:用户名、密码和验证码。但是Spring Security不支持内置的Captcha处理。

我刚刚开始考虑实现。并有以下几种选择:

  • 在Spring Security过滤器栈中添加单独的安全过滤器,
  • 完全重写AuthenticationProcessingFilter以支持一些Captcha
  • 使用一些程序化的身份验证,拦截Captcha逻辑,然后将用户名和密码传输给Spring Security

作为验证码的实现,我想到了JCaptcha,但您有什么想法?

4个回答

4
请看这篇文章:Spring Security 3: 集成 reCAPTCHA 服务
该方法使用两个过滤器来尽可能地使reCAPTCHA集成变得无缝和不会影响您现有的Spring Security实现。这意味着您无需改动现有的类,而且不会破坏您现有的Spring Security实现。

4
作为JCaptcha的替代方案,如果您想在您的网站上使用reCAPTCHA服务,那么请查看新版Spring in Practice书籍(目前处于beta版本)的免费第4.4节(直接PDF链接)。
这将展示您与Spring MVC和Spring Validation的集成。由于集成在前端,使用外部API,因此Spring Security在这里并没有真正发挥作用。
我不确定您的用例是什么?您希望使用验证码作为替代认证来证明“人类”身份吗?

1
我编辑了我的问题,以使情况更清楚。 我需要同时提交3个字段:验证码、用户名和密码。 - Pavel Rodionov

1

我已经通过定义自定义安全过滤器,与reCaptcha和Spring Security(Spring Web Flow + JSF)进行了集成。也许它不是最优雅的,但效果很好。 您可以查看我的博客-不幸的是是波兰语,但也许会对您或其他人有所帮助...

http://marioosh.net/blog/?p=1087


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接