Spring记住了自定义身份验证提供程序

时间:2014-08-20 11:12:45

标签: java spring authentication spring-security

我想为我的应用程序实现记住我的服务。我面临的主要问题是我正在使用自定义身份验证提供程序。它使用第三方应用程序进行身份验证。我没有直接访问他们的数据库。

我检查了这个Link并且它告诉UserDetailService的实现对于userauthenticxation服务是强制性的。不幸的是,在我的情况下,我无法做到这一点。

我也检查了这个Link,它说你也可以实现customRememberMeServices。但我不确定这是怎么做到的。它只传递一个请求和一个没有凭据的响应。

我的理解有限; spring在令牌

中存储userName和密码
 base64(username + ":" + expirationTime + ":" +
         md5Hex(username + ":" + expirationTime + ":" password + ":" + key))

username:          As identifiable to the UserDetailsService
password:          That matches the one in the retrieved UserDetails
expirationTime:    The date and time when the remember-me token expires,
                   expressed in milliseconds
key:               A private key to prevent modification of the remember-me token

有没有办法可以从此令牌中检索密码?如果不是我怎么能达到同样的目的呢?

1 个答案:

答案 0 :(得分:2)

没有。令牌是单向散列。重点是密码用于创建令牌,以后可以在用户再次连接时使用相同的数据进行验证。如果您无法从数据库中读取密码,则无法直接使用此方法。您可以为每个用户创建一个伪随机密码,并将其存储在您有权访问的数据库中,并实现UserDetailsService来加载它。

或者,您可以使用替代"persistent token"实现,该实现将实际令牌存储在数据库中,而不是从唯一用户数据重建它。

相关问题