Springboot - Security (6) 구글로그인 준비

Yuri Lee·2020년 9월 18일
0

Springboot - Security

목록 보기
6/8

OAuth2.0 로그인은 크게 두가지로 생각하면 된다.
첫번째는 인증을 처리하기 위한 것
두번째는 인증 처리가 완료된 다음 홍길동 정보에 접근할 수 있는 권한을 받는 것

google api console

url: http://localhost:8080/login/oauth2/code/google

승인된 리다이렉션 url은 우리가 구글 로그인을 완료하면 구글 서버쪽에서 우리쪽으로 코드를 돌려준다. (인증이 되었다는 코드)
그러면 이 코드를 받아 우리는 엑세스 토큰을 요청한다.

이 엑세스 토큰을 받아서 사용자 정보에 접근할 수 있는 권한이 생긴다. 엑세스 토큰을 얻기 위해서 필요한 것이 코드이다. 이 코드를 받을 수 있는 주소를 적은 것이다.

예전 강의에서 카카오 로그인을 했을 때 처럼 직접적으로 다 구현하면 이 주소가 크게 의미가 없는데 우리가 oauth client 라는 라이브러리를 사용하게 되면 이 주소는 고정이다.

여기에 대한 컨트롤러 주소를 만들 필요가 없다. 무슨 말일까?
이런 주소가 있다면 컨트롤러에는

@GetMapping("login/oauth2/code/google")이라는 주소가 있어야 한다. 근데 이런 컨트롤러를 만들 필요가 없다.
왜나면 라이브러리가 알아서 다 처리해주기 때문이다.

처음에 spring starter project 에서 dependencies를 체크해줄 때 oauth2 가 있다. 그걸 체크해주면 되는데 우리는 처음에 체크를 안했음 ..

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

해당 코드를 pom.xml에 추가해주었다.

loginForm.html

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

정해진 주소를 넣어줌. 이 주소는 바뀌면 안된다. ㅠ!!

여기서 구글 로그인 버튼을 눌러주면

다음과 같은 404 에러가 발생한다. 이유는 해당 주소에 대해서 맵핑된게 아무것도 없기 때문이다. 따라서 config에다가 코드를 추가해준다.

SecurityConfig.java

.and()
.oauth2Login()
.loginPage("/loginForm");

그리고 구글 로그인을 클릭하면 다음과 같이 사용자 계정을 선택할 수 있는 화면이 뜬다.

하지만 여기서 구글 계정으로 로그인을 하면 403이 발생한다. 아직 세션이 없기 때문이다.

구글 로그인까지 다 해서 인증은 되었는데 우리의 서버쪽으로 인증이 되고 나서 후처리를 하지 않았다. 다음 시간에 마저 ...😚😚😚


[Reference]

이 글은 유투버 데어 프로그래밍의 스프링 부트 시큐리티 강좌를 바탕으로 정리한 내용입니다.

profile
Step by step goes a long way ✨

0개의 댓글