Spring需要一个’AuthenticationManager’类型的bean

我一直在尝试按照在这里找到的教程来设置演示,以帮助我在我的本地机器上理解SSO,然后再在另一个项目中实现。 我遇到了一个让我陷入困境的问题。 我收到并告诉我添加一个bean的错误。 请告诉我我错过的代码。 我无法让程序运行。

文件系统树

在此处输入图像描述

AuthApplication.java

package com.spud.auth; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer; import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer; @SpringBootApplication @EnableResourceServer public class AuthApplication { public static void main(String[] args) { SpringApplication.run(AuthApplication.class, args); } @Configuration protected static class LoginConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.requestMatchers().antMatchers("/login", "/oauth/authorize").and().authorizeRequests().anyRequest() .authenticated().and().formLogin().permitAll(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); } } @Configuration @EnableAuthorizationServer protected static class OAuth2Config extends AuthorizationServerConfigurerAdapter { @Autowired private AuthenticationManager authenticationManager; @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.inMemory().withClient("foo").secret("bar") .authorizedGrantTypes("authorization_code", "refresh_token", "password").scopes("user_info") .autoApprove(true); } @Override public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception { oauthServer.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()"); } @Override public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { endpoints.authenticationManager(authenticationManager); } } } 

UserController.java

 package com.spud.controllers; import java.security.Principal; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @GetMapping("/user/me") public Principal user(Principal principal) { return principal; } } 

application.properties

 server.context-path=/sso-server 

错误给定 (运行时没有完整的控制台输出,但这是错误)

 *************************** APPLICATION FAILED TO START *************************** Description: Field authenticationManager in com.spud.auth.AuthApplication$OAuth2Config required a bean of type 'org.springframework.security.authentication.AuthenticationManager' that could not be found. Action: Consider defining a bean of type 'org.springframework.security.authentication.AuthenticationManager' in your configuration. 

您必须将AuthenticationManager公开为此处描述的spring bean。