구글 소셜 로그인

 

1. Google 클라우드 플랫폼 접속
2. API 및 서비스 => 사용자 인증 정보 
3. 구글 프로젝트 생성 
4. +사용자 인증 정보 만들기 OAuth 클라이언트 ID
5. 동의 화면 구성 선택 => 외부 설정 => 애플리케이션 이름 지정 ( 로그인 시도할때 보이는 화면 ) => API 범위
...email, ...profile, ...openid 설정 ( 위에 3개 )  
6.  애플리케이션 유형 => 웹애플리케이션 설정
7. 승인된 리디렉션 URI => URI 지정 ( http://localhost:8989/login/oauth2/code/google ) 8989 프로젝트 서버 주소
8. 생성된 클라이언트 ID, 보안비밀번호 확인 
9. build.gradle에 라이브러리 추가 (  implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' )
10. application-oauth.properties생성 추가 => 
#생성된 클라이언트 아이디
spring.security.oauth2.client.registration.google.client-id= 생성 된 클라이언트 ID 넣기

#생성된 클라이언트 비밀번호
spring.security.oauth2.client.registration.google.client-secret=생성 된 클라이언트 보안 비밀번호 추가

spring.security.oauth2.client.registration.google.scope=email

11. application.properties => spring.profiles.include=oauth 추가 

12. SecurityConfig 클래스 추가 => 
  @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {

        http.authorizeHttpRequests((auth) -> {
//            auth.antMatchers("/sample/all").permitAll();
//            auth.antMatchers("/sample/member").hasRole("USER");
            auth.antMatchers("/h2-console/**").permitAll();
        });

//        http.authorizeRequests()
//                .antMatchers("/h2-console/**").permitAll();

        http.csrf()
                .ignoringAntMatchers("/h2-console/**")
                .and().headers().frameOptions().sameOrigin();  // 여기!

        http.formLogin();
        http.csrf().disable();
        http.logout(logout -> logout
        // 로그아웃 요청을 처리할 URL 설정
                        .logoutUrl("/logout")
                // 로그아웃 성공 시 리다이렉트할 URL 설정
                        .logoutSuccessUrl("/login")
                // 로그아웃 핸들러 추가 (세션 무효화 처리)
                        .addLogoutHandler(((request, response, authentication) -> {
                            HttpSession session = request.getSession();
                            session.invalidate();
                        }))
                // 로그아웃 성곤 핸들러 추가 (리다이렉션 처리)
                        .logoutSuccessHandler(((request, response, authentication) ->
                                response.sendRedirect("/login")))
                // 로그아웃 시 쿠키 삭제 설정 (예: "remember-me" 쿠키 삭제)
                        .deleteCookies("remember-me")
        );
        http.oauth2Login().successHandler(successHandler());

        http.rememberMe().tokenValiditySeconds(60*60*24*7).userDetailsService(userDetailsService);

        return http.build();
    }

 

 

 

 

 

 

 

 

1. build.gradle 추가 

    runtimeOnly 'com.mysql:mysql-connector-j'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16'
    implementation 'org.springframework.boot:spring-boot-starter'
    runtimeOnly 'mysql:mysql-connector-java'

2. application.properties 추가

spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/security?serverTimezone=UTC&characterEncoding=UTF-8


spring.datasource.username=security
spring.datasource.password=security

 

 

'코드 정리' 카테고리의 다른 글

GitHub_Team  (1) 2023.11.25
Vue.js 실전_ 연습 순서  (0) 2023.11.08
Vue.js basic  (0) 2023.11.01
local=> Git  (0) 2023.11.01
파이썬 기초_1  (1) 2023.10.24

+ Recent posts