Добавление пользовательского UserDetailsService в приложение Spring Security OAuth2

Как добавить кастомUserDetailsService ниже доэтот весенний образец OAuth2?

По умолчаниюuser по умолчаниюpassword определяется вapplication.properties файлauthserver приложение.

Тем не менее, я хотел бы добавить следующий кастомUserDetailsService вdemo пакет изauthserver приложение для тестирования:

package demo;

import java.util.List;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.provisioning.UserDetailsManager;
import org.springframework.stereotype.Service;

@Service
class Users implements UserDetailsManager {

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        String password;
        List<GrantedAuthority> auth = AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_USER");
        if (username.equals("Samwise")) {
            auth = AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_HOBBIT");
            password = "TheShire";
        }
        else if (username.equals("Frodo")){
            auth = AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_HOBBIT");
            password = "MyRing";
        }
        else{throw new UsernameNotFoundException("Username was not found. ");}
        return new org.springframework.security.core.userdetails.User(username, password, auth);
    }

    @Override
    public void createUser(UserDetails user) {// TODO Auto-generated method stub
    }

    @Override
    public void updateUser(UserDetails user) {// TODO Auto-generated method stub
    }

    @Override
    public void deleteUser(String username) {// TODO Auto-generated method stub
    }

    @Override
    public void changePassword(String oldPassword, String newPassword) {
        // TODO Auto-generated method stub
    }

    @Override
    public boolean userExists(String username) {
        // TODO Auto-generated method stub
        return false;
    }
}

Как видите, этоUserDetailsService не являетсяautowired тем не менее, и он намеренно использует небезопасные пароли, потому что он предназначен только для целей тестирования.

Какие конкретные изменения необходимо внести впример приложения GitHub так что пользователь может войти какusername=Samwise сpassword=TheShireили какusername=Frodo сpassword=MyRing? Нужно ли вносить изменения вAuthserverApplication.java или в другом месте?

SUGGESTIONS:

Spring OAuth2 Руководство разработчика говорит использоватьGlobalAuthenticationManagerConfigurer настроитьUserDetailsService во всем мире. Однако поиск в этих именах дает менее чем полезные результаты.

Кроме того, другое приложение, которое использует внутреннюю пружинную защиту INSTEAD OF OAuth, использует следующий синтаксис для подключенияUserDetailsService, но я не уверен, как настроить его синтаксис для текущего OP:

@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
protected static class AuthenticationSecurity extends GlobalAuthenticationConfigurerAdapter {

    @Autowired
    private Users users;

    @Override
    public void init(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(users);
    }
}

Я пытался с помощью@Autowire внутриOAuth2AuthorizationConfig подключитьUsers кAuthorizationServerEndpointsConfigurer следующее:

@Autowired//THIS IS A TEST
private Users users;//THIS IS A TEST

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
   endpoints.authenticationManager(authenticationManager)
        .accessTokenConverter(jwtAccessTokenConverter())
        .userDetailsService(users)//DetailsService)//THIS LINE IS A TEST
        ;
}

Но журналы Spring Boot указывают, что пользовательSamwise не был найден, что означает, чтоUserDetailsService не был успешно подключен. Вот соответствующая выдержка из журналов Spring Boot:

2016-04-20 15:34:39.998 DEBUG 5535 --- [nio-9999-exec-9] o.s.s.a.dao.DaoAuthenticationProvider    :  
        User 'Samwise' not found
2016-04-20 15:34:39.998 DEBUG 5535 --- [nio-9999-exec-9]   
        w.a.UsernamePasswordAuthenticationFilter :  
        Authentication request failed:  
        org.springframework.security.authentication.BadCredentialsException:  
        Bad credentials

Что еще я могу попробовать?

Ответы на вопрос(2)

Ваш ответ на вопрос