오래 못 할 짓 하지 않기

[ Spring boot Security ] [ Token X ] 1. Oauth 로그인 사용하기 위한 밑작업 본문

혼자하기/연습 1) OAuth

[ Spring boot Security ] [ Token X ] 1. Oauth 로그인 사용하기 위한 밑작업

쫑알bot 2024. 3. 3. 13:42
728x90

 

이번에는 페이지가 제대로 넘어가는 것도 확인할거기 때문에 아래 mustache 파일로 넘어갈 수 있도록

그에 관련된 Controller를 만들어준다.

 

 

 

 


 

그 다음 config 패키지에 SecurityConfig를 만들어 아래와 같이 만들어준다.

 

 

 

 

코드 ▼ 

더보기
package com.example.oauthnojwt.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {


    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{

        http.csrf((AbstractHttpConfigurer::disable));

        http.formLogin(AbstractHttpConfigurer::disable);

        http.httpBasic((AbstractHttpConfigurer::disable));

        http.oauth2Login(Customizer.withDefaults());

        http.authorizeHttpRequests((auth) ->auth

                .requestMatchers("/","/oauth2/**","/login/**").permitAll()
                .anyRequest().authenticated()
        );

        return http.build();

    }
}

 

 

하고 properties 파일에 우리가 원하는 데이터를 가져올 수 있게 registration 과 provider를 설정한다. 

 

 

#registration
spring.security.oauth2.client.registration.naver.client-name=naver
spring.security.oauth2.client.registration.naver.client-id=
spring.security.oauth2.client.registration.naver.client-secret=
spring.security.oauth2.client.registration.naver.redirect-uri=http://localhost:8080/login/oauth2/code/naver
spring.security.oauth2.client.registration.naver.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.naver.scope=name,email

#provider
spring.security.oauth2.client.provider.naver.authorization-uri=https://nid.naver.com/oauth2.0/authorize
spring.security.oauth2.client.provider.naver.token-uri=https://nid.naver.com/oauth2.0/token
spring.security.oauth2.client.provider.naver.user-info-uri=https://openapi.naver.com/v1/nid/me
spring.security.oauth2.client.provider.naver.user-name-attribute=response