Spring双因素身份验证在哪里保存凭据

时间:2015-09-16 17:28:03

标签: spring authentication two-factor-authentication

我试图在Spring应用程序中实现双因素身份验证。

期望的情况

我希望用户首先使用他的用户名和密码登录,如果这些是正确的,我希望系统生成随机密钥并通过电子邮件发送给用户。之后,系统必须将用户重定向到他只需输入令牌并登录系统的页面。

到目前为止(伪代码)

用户进入login.jsp页面。使用用户名/密码登录后,系统会发出CustomMade AuthenticationException。在AuthenticationFailureHandler中,我对异常执行了getAuthentication(我意识到了折旧)但我使用用户名向用户发送了他的令牌。之后,我将异常放入会话中(使用request.getSession()。setAttribute),最后系统重新加载login.jsp。

Login.jsp在会话中看到异常并显示令牌输入字段。用户填写令牌输入字段并登录。系统使用会话中的凭据和给定令牌对用户进行身份验证。

问题

我认为在会话中保存用户名/密码是不好的做法。我想到的两种可能的解决方案:

  1. 检查用户名/密码后。将用户名保存在静态变量或DB中。当用户输入令牌时,检查用户名是否在变量/ db中并检查令牌。如果令牌是正确的,请与用户一起登录。

  2. 检查用户名/密码后,以低角色登录用户。由于角色较低,用户只能进入令牌页面,在输入有效令牌后,系统会为用户提供新的权限。

  3. 实施的最佳解决方案是什么?

0 个答案:

没有答案