这里有很多需要该项目实施的修改
描述流,不止在范围上应为一个单一的问题。该
答案将仅关注如何解决:
org.springframework.security.oauth2.provider.NoSuchClientException:没有
请求ID为null的客户端
在 Spring Boot授权服务器中运行时尝试使用SecurityWebApplicationInitializer和FilterBean
时。
发生此异常的原因是因为WebApplicationInitializer实例不是由SpringBoot运行的。这包括AbstractSecurityWebApplicationInitializer可在部署到独立Servlet容器的WAR中工作的所有子类。因此,发生的事情是Spring
Boot根据@Bean注释创建了过滤器,忽略了AbstractSecurityWebApplicationInitializer,并将过滤器应用于所有
URL。同时,您只希望将过滤器应用于要传递给的网址addMappingForUrlPatterns。
相反,要将Servlet过滤器应用于Spring Boot中的特定URL,应定义一个FilterConfigurationBean。对于问题中描述的流程,该流程试图将自定义TwoFactorAuthenticationFilter应用于/oauth/authorize,如下所示:
@Beanpublic FilterRegistrationBean twoFactorAuthenticationFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(twoFactorAuthenticationFilter()); registration.addUrlPatterns("/oauth/authorize"); registration.setName("twoFactorAuthenticationFilter"); return registration;}@Beanpublic TwoFactorAuthenticationFilter twoFactorAuthenticationFilter() { return new TwoFactorAuthenticationFilter();}


