4
respostas

Autênticação e autorização entre Angular 2 e Spring boot + spring security

Boa tarde,

Estou com dificuldades para realizar a integração do meu projeto angular 2 com o spring e o spring security .... aqui na alura tem algum curso que apresenta como realizar a integração? ou alguém conhece um tutorial que faz este trabalho? pois não quero que seja autorizado as requisições com o back-end antes de autenticar.

O material pode ser em inglês também ... não tenho problemas com este idioma.

Att.

4 respostas

Opa, na trilha de react, trabalhamos com autenticação e o backend é escrito usando o Spring. Em geral você não tem muito controle do que o client possa chamar, o que precisa fazer é se proteger no lado do servidor.

Se quiser dar uma olhada por cima, os projetos estão https://github.com/alberto-alura

Alberto, eu acompanhei você pelo seu blog (https://domineospring.wordpress.com/) e vi que você trabalha com o backend em spring e também em angular.

Como que você faz o login e a autenticação utilizando JWT entre o spring e o angular? Estou com essa dificuldade e não estou conseguindo solucionar. Já abri um post no curso de angular e o professor @flaviohenrique me deu umas dicas porém ele me informou que o meu problema possivelmente seja na parte da minha API.

Mais informações de como configurei minha aplicação spring boot + spring security foi feita neste post.

https://cursos.alura.com.br/forum/topico-autenticacao-e-autorizacao-entre-angular-2-e-spring-boot-spring-security-41069

Toda vez que testo minha aplicação pelo Postman eu consigo enviar pelo método POST uma solicitação para minha API e ela me retorna no header a autorização utilizando o bearer .... e quando envio outra solicitação pelo método GET por exemplo e adiciono no header da requisição a autorização vindo do meu backend funciona tudo normal ele autoriza e devolve os meus dados no formato json.

Se puder me orientar agradeço bastante.

Att

Vixe, vou te dizer do lado do angular eu não vou conseguir te ajudar muito. Do lado do Spring, a coisa padrão é verificar se as requisições estão sendo autorizadas e as respostas estão voltando de forma correta.

Alberto Souza o seu exemplo com react funcionou para mim que estou usando Angular 2, porém eu tenho uma dúvida, a mudança mais significativa que eu tive que fazer para o meu projeto funcionar foi usar o seu CorsFilter com adição de uma linha, o exposedHeader. Mas o que eu queria entender é o trecho com setOrder, o cors tem sempre que ser o último filtro a ser executado ? ele não teria que ser um dos primeiros para não acontecer problema de crossOrigin ? enfim porque "jogar a ordem lá pra baixo" ?

@Bean
    public FilterRegistrationBean corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
config.addExposedHeader("Authorization");
        source.registerCorsConfiguration("/**", config);
        FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
        //jogando a ordem lá para baixo, tem que rodar do filtro do security.
        bean.setOrder(-100000);
        return bean;
}