이론적인 부분은 전 Security version.1에 서 다 설명돼있습니다.
구글
googleapi로 들어간다
새 프로젝트를 만든다
만든 프로젝트를 선택한 후에 OAuth동의 화면으로 간다
앱 이름 설정하고 Oauth 동의한 후에 사용자 인증 정보로 이동한다.
위와 같은 경로로 들어간다.
승인된 리다이렉션 URI
구글 로그인을 완료가 되고 나면 구글 서버 쪽에서 우리 쪽으로 코드를 돌려준다. 그럼 우리는 이 코드를 받아서 다시 코드를 통해서 액세스 토큰을 요청을 한다.
이 액세스 토큰을 받아서 이 엑세스토큰으로 우리가 사용자 대신에 우리서버가 구글서버에 사용자의 개인정보같은 민감한정보에 접근할 수 있는 권한이 생긴다.
이때 엑세스토큰을 얻기 위해서 필요한 게 코드인데 그 코드를 받기 위한 주소를 적는 것이다.
OautClient라이브러리를 사용하게 되면 이 주소는 고정이다.
무슨 말이냐면 앞에 http://localhost:8080까지는 자유롭게 적을 수 있지만 뒤에 있는 /login/oauth2/code/google은 고정이다/login/oauth2/code/facebook을 하면 facebook을 하면 페이스북 로그인을 하는 것임
그리고 이 주소로 return이 될 때 라이브러리가 다 처리해주기 때문에 따로 컨트롤러를 만들 필요도 없다.
위 설정까지 해주고 만들기를 누른다.
클라이언트 id랑 비밀번호는 노출되지 않게 관리한다.
라이브러리 설치
국 룰
<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으로 이동되도록 설정이 돼있다.
구글 로그인이 잘 나온다.
근데 한 가지 문제가 있다.
우리 서버는 구글 로그인을 했을 때 구글 로그인을 했는지 모르기때문.
그래서 다음 포스팅에서는 구글 로그인이 완료된 뒤의 후처리를 해보겠다.
인증이 필요한 페이지주소를 요청하면 위와같이 오류가 난다.
'SpringbootSecurity' 카테고리의 다른 글
SpringbootSecurity/Springboot로 구글로그인 해보기(3)/Authentication객체가 가질 수 있는 2가지 타입 (0) | 2021.08.29 |
---|---|
SpringbootSecurity/Springboot로 구글로그인 해보기(2)/구글 회원 프로필 정보 (0) | 2021.08.29 |
SpringbootSecurity/Security권한처리/@EnableGlobalMethodSecurity처리 (0) | 2021.08.27 |
SpringbootSecurity/시큐리티 로그인 (0) | 2021.08.25 |
SpringbootSecurity/시큐리티 회원가입 (0) | 2021.08.25 |