Hello

7. 구글 로그인 준비

by 볼빵빵오춘기

google api 콘솔로 프로젝트 등록

구글 api 콘솔 사이트로 들어간다. (https://console.developers.google.com/ 링크로 접속)
프로젝트 만든다.

OAuth 동의한다.

사용자 인증 정보를 설정한다.

 

build.gradle.kts (or pom.xml)

라이브러리 추가한다.(dependencies안에  넣어주면 된다.)

implementation("org.springframework.boot:spring-boot-starter-oauth2-client")

 

application.properties

google 로그인에 필요 부분 추가한다.

#oauth - google login
spring.security.oauth2.client.registration.google.client-id=클라이언트아이디 입력
spring.security.oauth2.client.registration.google.client-secret=클라이언트 보안 비밀번호 입력
spring.security.oauth2.client.registration.google.scope=email,profile // 가져올 정보 선택해서 적어준다.

 

loginForm.html

구글로그인 a링크 코드 추가한다.

이 때, 링크 주소가 중요하다!
/oauth2/authorization/ ⇒ 이 부분 고정이고

/oauth2/authorization/ + google or kakao or naver 이런식으로 작성하면 된다.

<a href="/oauth2/authorization/google">구글로그인</a>
더보기

실행결과

⇒ 해당 주소에 대해 맵핑된 부분이 없어 404가 뜬다.

⇒ 이 부분도 SecurityConfig에 설정해주면 된다.

SecurityConfig

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable();
    http.authorizeRequests()
            .antMatchers("/user/**").authenticated()
            .antMatchers("/manager/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_MANAGER')")
            .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
            .anyRequest().permitAll()
            .and()
            .formLogin()
            .loginPage("/loginForm")
            .loginProcessingUrl("/login") // login 주소가 호출이 되면 시큐리티가 낚아채서 대신 로그을 진행
            .defaultSuccessUrl("/")
            .and()
            .oauth2Login()
            .loginPage("/loginForm"); // 구글 로그인이 완료된 뒤의 후처리가 필요함.
}
더보기

실행결과

⇒ 실제 로그인을 할려고 계정을 누르면 403이 뜬다.

⇒ 아직 session이 생성되지 않았기 때문이다.

⇒ 구글 로그인 인증을 해서 다 됐는데 우리 서버쪽으로 인증이 되고나서 후처리가 안되었기 때문이다.

⇒ 후처리가 추가적으로 필요

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기