스프링 부트에서 OAuth를 사용하여 소셜 로그인 기능 구현하는 방법입니다.
OAuth를 지원하는 서비스가 많은데 그중에서 네이버 로그인을 사용하겠습니다.
먼저 네이버 로그인 서비스가 등록되어 있어야 합니다.
등록이 끝나면 Client ID와 Client Secret가 생성되는데 이 키값들을 사용해 네이버 로그인 서비스를 통해 인증합니다.
pom.xml에 OAuth 라이브러리를 추가합니다.
application.properties 파일의 1번째 라인을 보게 되면
스프링 프로필 환경 설정을 통해 다른 추가적인 설정을 할 수 있습니다.
지금 oauth로 되어있는데 이는 applicatoin-oauth.properties 파일에 있는 설정값들을 스프링 환경에 적용할 수 있습니다.
application-oauth.properties 파일에 대한 설명은 아래에서 확인하면 됩니다.
2~3라인: 앞에서 진행한 네이버 로그인 Client ID와 Client Secret 값
4라인: 네이버 OAuth 인증이 성공되면 네이버에서 리다이렉트 하는 URI
5라인: 네이버 OAuth 인가 유형
6라인: 어플리케이션에서 네이버 OAuth에 요청하는 권한 범위, 여기서는 이름과 이메일 요청
7라인: 클라이언트 이름
10라인: 네이버 OAuth 인가 엔드포인트, 사용자 인증 및 데이터 접근 허용 처리
11라인: 어플리케이션이 인가 코드를 교환하여 Access 토큰을 요청하는 URI
12라인: Access 토큰을 이용하여 사용자 정보 조회하는 URI
13라인: 사용자 정보의 이름 속성
사용자 정보를 저장하는 User 엔티티 클래스와 사용자 권한 Role 열거형을 정의합니다.
이메일로 사용자 엔티티를 조회하는 Repository 정의합니다.
네이버 로그인 이후 가져오는 사용자 정보들을 DB와 세션에 저장하는 CustomOAuth2Service입니다.
loadUser 메소드는 properties 파일에 있는 속성을 이용하여 사용자 정보를 가져온 뒤
DB에 사용자 정보 저장하는 saveOrUpdate 메소드를 호출하고
세션에 사용자 정보를 저장합니다.
스프링 시큐리티를 설정하는 SecurityConfig입니다.
기존 시큐리티와 달리 OAuth 로그인 설정하고 있습니다.(31~36라인)
해당 코드에 대한 자세한 설명은 아래에서 확인하면 됩니다.
31~36라인: 스프링 시큐리티에서 OAuth 로그인을 설정하고 있습니다.
32라인: OAuth 기반 로그인 설정을 구성합니다.
33~34라인: OAuth 로그인 성공 시 사용자 정보를 가져와서 작업하는 엔드포인트입니다.
앞에서 정의한 CustomOAuth2Service가 그 역할을 담당합니다.
36라인: OAuth 로그인 성공 핸들러를 지정합니다.
아래에서 정의한 oauth2LoginSuccessHandler 메소드가 그 역할을 담당합니다.
40~46라인: OAuth 로그인 성공 핸들러, 로그인 성공 이후 "test.do"로 리다이렉트 합니다.
디버그 모드에서 OAuth 로그인을 실행하면 위와 같이 성공한 것을 확인할 수 있습니다.
해당 글에 대한 정보는 이동욱님의 스프링 부트 도서를 참고했습니다.
https://lib.seoul.go.kr/search/detail/CATTOT000001358798
'dev > 스프링' 카테고리의 다른 글
Spring Boot yml 외부 참조 (0) | 2023.12.02 |
---|---|
Spring Boot Session Store Type JDBC (0) | 2023.11.27 |
Spring WebSocketSession (0) | 2023.08.22 |
Spring Boot Jasypt (0) | 2023.08.14 |
Spring Naver Editor 이미지 업로드 (0) | 2023.06.28 |