SpringbootSecurity

SpringbootSecurity/Springboot로 구글로그인 해보기(1)/구글 로그인 준비(설정)

25G 2021. 8. 27. 10:11

이론적인 부분은 전 Security version.1에 서 다 설명돼있습니다.

구글

googleapi로 들어간다

새 프로젝트를 만든다

만든 프로젝트를 선택한 후에 OAuth동의 화면으로 간다

앱 이름 설정하고 Oauth 동의한 후에 사용자 인증 정보로 이동한다.

위와 같은 경로로 들어간다.

승인된 리다이렉션 URI

구글 로그인을 완료가 되고 나면 구글 서버 쪽에서 우리 쪽으로 코드를 돌려준다. 그럼 우리는 이 코드를 받아서 다시 코드를 통해서 액세스 토큰을 요청을 한다.

이 액세스 토큰을 받아서 이 엑세스토큰으로 우리가 사용자 대신에 우리서버가 구글서버에 사용자의 개인정보같은 민감한정보에 접근할 수 있는 권한이 생긴다. 

이때 엑세스토큰을 얻기 위해서 필요한 게 코드인데 그 코드를 받기 위한 주소를 적는 것이다.

OautClient라이브러리를 사용하게 되면 이 주소는 고정이다.

무슨 말이냐면 앞에 http://localhost:8080까지는 자유롭게 적을 수 있지만 뒤에 있는 /login/oauth2/code/google은 고정이다/login/oauth2/code/facebook을 하면 facebook을 하면 페이스북 로그인을 하는 것임

 

그리고 이 주소로 return이 될 때 라이브러리가 다 처리해주기 때문에 따로 컨트롤러를 만들 필요도 없다.

 

위 설정까지 해주고 만들기를 누른다.

 

클라이언트 id랑 비밀번호는 노출되지 않게 관리한다.

 

라이브러리 설치

 

https://mvnrepository.com/

국 룰

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

프로젝트를 만들 때에 oauth2-client를 체크하고 만든 후에 porm.xml에 있는 의존성만 가져와도 된다. 저는 그렇게했습니다.

 

 

yml설정

id는 아까 클라이언트 id만들기한후에 나온 아이디와 비밀번호를 복붙하면 됩니다.

이제 loginform으로 가서 버튼을 하나 만들어서 위 주소를 쓰는데 위 주소는 고정돼있는 것이기 때문에 바꿀 수 없다. 이건 규칙!

이제 security설정만 하면 된다.

oauth2 Login인을 쓰기로 했는데 기본적으로 formLogin이 있기 때문에 인증이 필요한 페이지는 /loginForm으로 이동되도록 설정이 돼있다.

구글 로그인이 잘 나온다. 

구글로그인이후에 index페이지로 이동

근데 한 가지 문제가 있다.

우리 서버는 구글 로그인을 했을 때 구글 로그인을 했는지 모르기때문.

그래서 다음 포스팅에서는 구글 로그인이 완료된 뒤의 후처리를 해보겠다.

구글 로그인후에 우리 서버의 후처리가 안돼서 오류가남

인증이 필요한 페이지주소를 요청하면 위와같이 오류가 난다.

 

https://github.com/fj2008/SpringbootSecurity