Olá,
eu entendi que para configurar as rotas da nossa aplicação com spring security devemos definir uma classe que esteja anotada com @EnableWebSecurity e extender da classe WebSecurityConfigurerAdapter, e criar um método configure que tem como parâmetro HttpSecurity e dentro desse método definios as permissões.
Ok, até aí tudo bem.
Mas temos outro método configure que recebe como parâmetro um AuthenticationManagerBuilder, e é neste ponto que começa minhas duvidas, o método foi feito, mas eu não entendi como ele funciona, o que ele faz. segue o método :
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(usuarioDao)
.passwordEncoder(new BCryptPasswordEncoder());
}
O que esse método está fazendo ? como ele realiza a autenticação, como o spring após isso faz a verificação de que estou autenticado ou não estou ? onde é que o spring guarda essa informação de que estou autenticado ? alguém pode me explicar melhor o que acontece nesse processo ?
A outra dúvida é :
Em um cenário que eu tenha uma API Rest, onde a mesma sirva a varios projetos diferentes, não faz muito sentido eu ser autenticado por uma tela de login da API Rest, então como seria feita essa autenticação ? como seria feita a autenticação e como saberia que o usuario que está mandando uma requisição está autenticado ?