Tambahkan peran di musim semi dengan userDetailsService khusus menggunakan otentikasi okta

Saya mengikuti tuto hebat ini: https://developer.okta.com/blog/2020/01/06/crud-angular-9-spring-boot-2#spring-boot-as-an-oauth-2-0-resource-server

Saya ingin menambahkan Peran ke bagian pegas. Saya tidak ingin menggunakan klaim seperti di tuto ini https://developer.okta.com/blog/2018/09/26/build-a-spring-boot-webapp tetapi saya ingin menambahkan peran bea cukai saya (dari db saya sendiri).

Saya mencoba mengganti userDetailsService() dari WebSecurityConfigurerAdapter untuk menggunakan UserDetailService khusus saya. Tapi sepertinya cara ini tidak pernah dipanggil… (lihat println), benarkah?

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserRepository userRepository;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //@formatter:off
        http
                .authorizeRequests()
                .antMatchers("/home/**").permitAll()
                .antMatchers("/admin/**").hasAuthority("ADMIN")
                .anyRequest().authenticated()
                .and()
                    .oauth2Login()
                .and()
                    .oauth2ResourceServer().jwt();
        //@formatter:on
    }

    @Override
    protected UserDetailsService userDetailsService() {
        return username -> {
            System.out.println("yo");
            Optional<co.simplon.blog.model.User> user = userRepository.findByName(username);

            return User
                    .withUsername(username)
                    .password(user.get().getPassword())
                    .authorities(Arrays.asList(user.get().getRole()))
                    .accountExpired(false)
                    .accountLocked(false)
                    .credentialsExpired(false)
                    .disabled(false)
                    .build();
        };
    }


}

person Josselin Tobelem    schedule 23.03.2020    source sumber
comment
Hai @Josselin Bisakah Anda memecahkan masalah ini. Saya memiliki persyaratan yang sama. Namun tidak dapat menemukan solusi.   -  person Biky    schedule 15.09.2020
comment
Hai @biky, saya tidak memahami masalah ini. Tidak masalah bagi saya untuk menggunakan jwt (pegas) + firebase (sudut).   -  person Josselin Tobelem    schedule 16.09.2020


Jawaban (1)


Anda harus menambahkan implementasi UserDetailsService Anda di WebConfigurerSEcurityAdapter:

    @Override
public void configure(AuthenticationManagerBuilder builder)
        throws Exception {
    builder.userDetailsService(new MyUserDetailsService());
}

Kemudian Anda akan melihat bahwa implementasi Anda akan mulai dipanggil.

person Fabio Cabrini    schedule 12.04.2020