Spring Security 5使用现代化的密码存储,请参阅OAuth2
Autoconfig:
如果您使用自己的授权服务器配置通过
ClientDetailsServiceConfigurer如下所示的实例配置有效客户端列表,请注意,此处配置的密码受Spring
Security 5随附的现代化密码存储的约束。
要解决您的问题,请参阅Spring Security Reference:
故障排除
当存储的密码之一没有ID(如“密码存储格式”一节中所述)时,会发生以下错误。
java.lang.IllegalArgumentException: There is no PasswordEnprer mappedfor the id “null”
at
org.springframework.security.crypto.password.DelegatingPasswordEnprer$UnmappedIdPasswordEnprer.matches(DelegatingPasswordEnprer.java:233)
at
org.springframework.security.crypto.password.DelegatingPasswordEnprer.matches(DelegatingPasswordEnprer.java:196)解决该错误的最简单方法是切换为显式提供
PasswordEnprer密码进行编码的方式。解决此问题的最简单方法是弄清楚密码的当前存储方式,并明确提供正确的密码PasswordEnprer。如果您是从Spring
Security 4.2.x迁移的,则可以通过公开一个NoOpPasswordEnprerbean
恢复到以前的行为。例如,如果您使用的是Java配置,则可以创建如下所示的配置:还原为
NoOpPasswordEnprer不安全。您应该改为使用DelegatingPasswordEnprer来支持安全密码编码。@Beanpublic static NoOpPasswordEnprer passwordEnprer() { return NoOpPasswordEnprer.getInstance();}如果您使用的是XML配置,则可以公开
PasswordEnprer带有id的passwordEnprer:<b:bean id="passwordEnprer"factory-method=”getInstance”/>
或者,您可以为所有密码加上正确的ID前缀,然后继续使用
DelegatingPasswordEnprer。例如,如果您使用的是BCrypt,则可以从以下方式迁移密码:a$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG至
{bcrypt}a$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)