Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 在AuthenticationProvider中成功进行身份验证后,是否需要将原始凭据放入UsernamePasswordAuthenticationToken?_Spring_Spring Security - Fatal编程技术网

Spring 在AuthenticationProvider中成功进行身份验证后,是否需要将原始凭据放入UsernamePasswordAuthenticationToken?

Spring 在AuthenticationProvider中成功进行身份验证后,是否需要将原始凭据放入UsernamePasswordAuthenticationToken?,spring,spring-security,Spring,Spring Security,我在入口处收到一个已经确认的用户id。我决定为传入的id编写身份验证的实现——VKID身份验证。以及AuthenticationProvider的实现,该实现接收VkIdAuthentication,然后查找UserDetails并返回UsernamePasswordAuthenticationToken 但我没有用户提供的原始凭据。可以将null作为UsernamePasswordAuthenticationToken的凭据吗 《迷惑我》中的一条评论: //确保返回用户提供的原始凭据, //因

我在入口处收到一个已经确认的用户id。我决定为传入的id编写身份验证的实现——VKID身份验证。以及AuthenticationProvider的实现,该实现接收VkIdAuthentication,然后查找UserDetails并返回UsernamePasswordAuthenticationToken

但我没有用户提供的原始凭据。可以将null作为UsernamePasswordAuthenticationToken的凭据吗

《迷惑我》中的一条评论:

//确保返回用户提供的原始凭据, //因此,即使使用编码密码,后续尝试也会成功


从以下评论中可以找到:

更广泛地说:也许有些身份验证提供程序确实需要 即使会话已通过身份验证,或者 还有其他需要有凭证的用例 出于其他目的,但从我天真的角度来看 验证完成后,不需要用户凭据 已成功完成,因此可能所有身份验证管理器都应该 从身份验证实例中清除凭据,而不考虑 涉及的令牌/提供者类型

从中可以看出,默认行为是,即使您从AbstractUserDetailsAuthenticationProvider返回一个UsernamePasswordAuthenticationToken,它也会很快调用UsernamePasswordAuthenticationTokenEraseCentries,以再次将凭据设置为NULL


因此,如果在成功身份验证后不需要使用用户凭据,我想说使用空凭据返回身份验证是相当安全的。

从以下评论中可以找到:

更广泛地说:也许有些身份验证提供程序确实需要 即使会话已通过身份验证,或者 还有其他需要有凭证的用例 出于其他目的,但从我天真的角度来看 验证完成后,不需要用户凭据 已成功完成,因此可能所有身份验证管理器都应该 从身份验证实例中清除凭据,而不考虑 涉及的令牌/提供者类型

从中可以看出,默认行为是,即使您从AbstractUserDetailsAuthenticationProvider返回一个UsernamePasswordAuthenticationToken,它也会很快调用UsernamePasswordAuthenticationTokenEraseCentries,以再次将凭据设置为NULL


因此,我想说,如果在成功验证后不需要使用用户凭据,则返回带有NULL凭据的验证是相当安全的。

AFAIK传递NULL、empty或任何值都可以,如果您可以确保用户自己使用的是承载令牌,例如,这样,您不必具有用户凭据,但可以确认他的身份。@nullptr从我的AuthenticationProvider返回UsernamePasswordAuthenticationToken有意义吗?AuthenticationProvider接收一种类型的身份验证(VkIdAuthentication)并返回另一个UsernamePasswordAuthenticationToken是否正常?如果您可以确保用户自己使用的是承载令牌,则可以传递null、empty或任何值。例如,这样您就不必拥有用户凭据,但是您可以确认他的身份。@nullptr从我的AuthenticationProvider返回UsernamePasswordAuthenticationToken有意义吗?AuthenticationProvider接收一种类型的身份验证(VkIdAuthentication)并返回另一个UsernamePasswordAuthenticationToken是否正常?