👻 들어가기 앞서..
스프링 시큐리티는 인증과 인가 기능을 가진 프레임워크입니다.
인터셉터, 필터 기반의 보안 기능을 구현하는 것보다 스프링 시큐리티를 통해 구현하는 것을 권장한다고 합니다.
확장성을 고려한 프레임워크여서 다양한 요구사항에 쉽게 추가하고 변경할 수 있습니다.
그리고 많은 서비스에서 로그인 기능을 소셜 로그인 기능으로 사용합니다.
왜 소셜 로그인 기능을 사용하나요?
로그인 기능을 직접 구현 하려면 보안, 인증, 찾기, 변경 같은 기능들을 전부 다 구현 해야합니다.
많은 시간 투자와 코드의 복잡성이 늘어나겠죠?
그러나 Oauth 로그인 구현시 로그인 기능을 대신 해주며 서비스 개발에 더욱더 집중 할 수 있도록 합니다.
이번장에서는 구글과 네이버 로그인을 연동하여 로그인 기능을 구현해보겠습니다.
👻 스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트
아래 절차대로 진행 해주시면 됩니다.
- 구글 클라우드 플랫폼 주소(https://console.cloud.google.com ) 로 이동합니다.
- 새 프로젝트를 만듭니다.
- 클라이언트 ID 를 생성합니다.
- 승인된 리디렉션 URI 설정을 해줍니다. → http://localhost:8080/login/oauth2/code/google
- 생성된 클라이언트 id와 pw 를 기억해두세요!
resourecs 디렉토리에 application-oauth.properties 파일을 생성하고 아래 코드를 추가해줍니다.
spring.security.oauth2.client.registration.google.client-id=클라이언트 아이디
spring.security.oauth2.client.registration.google.client-secret=클라이언트 보안 비밀
spring.security.oauth2.client.registration.google.scope=profile, email
앞전에 profile, email, openid 를 범위 설정을 했는데 scope=profile, email 을 따로 해준 이유는 openid라는 scope가 있으면 Open id Provider로 인식하기 때문입니다.
이렇게 되면 OpenId Provider인 서비스(구글)와 그렇지 않은 서비스(네이버/카카오 등)로 나눠서 각각 OAuth2Service를 만들어야 합니다.
하나의 OAuth2Service로 사용하기 위해 일부러 openid scope를 빼고 등록합니다.
application-oauth.properties 파일을 profile로 호출하기 위해 application.properties 파일에 아래 코드를 추가해줍시다.
## oauth-profile
spring.profiles.include=oauth
application-oauth.properties 은 github에 올라가면 안되는 파일이므로 .gitignore 파일에 등록을 시켜줍니다.
### oauth.properties ###
application-oauth.properties
.gitignore 가 제대로 작동되지 않아 github에 제외 된 파일이 올라가는 경우 대처법!
git의 캐시가 문제가 있어 아래 명령어로 캐시 내용을 전부 삭제 후 다시 add all 해서 커밋을 해보세요.
git rm -r --cached .
git add .
git commit -m "fixed untracked files"
'Book > Spring boot 와 AWS로 혼자 구현하는 웹서비스' 카테고리의 다른 글
[Book] 17) 수정 및 삭제 기능을 만들어보자! (0) | 2022.04.02 |
---|---|
[Book] 16) 전체 조회 화면 및 기능을 만들어보자! (0) | 2022.04.02 |
[Book] 15) 머스테치로 화면 구성을 해보자! -2 (0) | 2022.04.01 |
[Book] 14) 머스테치로 화면 구성을 해보자! -1 (0) | 2022.04.01 |
[Book] 13) JPA Auditing으로 생성시간/수정시간 자동화 하기! (0) | 2022.04.01 |
[Book] 12) H2 DB 웹 콘솔에서 직접 접근해보자! (0) | 2022.04.01 |
[Book] 11) API 만들어보기! -4 (0) | 2022.03.31 |
[Book] 10) API 만들어보기! -3 (0) | 2022.03.31 |