자세한 것은 코드는 아래의 Git을 참고하도록 하자
9번 글의 JWT 글을 참고해서 일정 수준의 코드 작성이 필요하다
Oauth2-client를 사용할 필요가 있다
[참고]
9번 글에서 Spring security에 설명했듯이
authoriztion에는 UserDetails, Oauth2User 데이터 만이 들어갈 수 있습니다
UserDetails는 일반 회원가입에서
Oauth2User는 카카오, 네이버 등의 다른 사이트와 연동한 로그인을 할 때 사용할 수 있는
라이브러리 개념으로 생각하면 편하다
모든 로그인 기능은 해당 사이트에서 API를 받아와야 생성 할 수 있기에
진행할 때 반드시 위의 유튜브를 참고할 수 있도록 하자
1. 구글, 네이버 등의 정보를 받을 인터페이스 생성
다형성을 이용해서 받아올 설계도(인터페이스)를 미리 만들어서 작업할 수 있도록 한다
2. Naver 로그인 및 회원가입 시 정보를 받아올 Info 클래스 작성
제작되었던 인터페이스를 상속받아서 모든 데이터를 받아온다
여기서 ProviderId는 id 와 sub 형태로 데이터를 받아오게 되는데
데이터를 어떻게 받아오는지를 확인하고 타입을 결정하면 된다
3. Service 클래스
해당 클래스에서 ClientRegistration의 아이디를 확인해서 구글인지 네이버인지를 체크해서
해당 데이터를 Builder를 통해서 해당 데이터를 불러와서 DB에 넣어주게 된다
4. DB 확인
DB에 연결 된 데이터를 보면 password에 인코딩 된 데이터가 들어가있고
provider에는 로그인 한 사이트의 이름
그리고 ID 값이 들어가 있고
role은 service에서 ROLE_USER로 설정해 두었기에 해당 데이터가 들어가고 있다
5. application.yml 설정
유튜브를 참고하도록 하자
중요한 점은
구글, 페이스 북은 OAuth에 등록되어있는 소스코드이기에
provider 설정이 필요없지만
Naver의 경우 Provider가 필요하다는 점을 명심하도록 하자
'IT 공부' 카테고리의 다른 글
13. JSON 방식으로 이미지 보내기 (0) | 2022.08.08 |
---|---|
11. Cors (0) | 2022.07.30 |
9. JWT 및 SpringSecurity (0) | 2022.07.21 |
8. JPA(Java Persistence API) (0) | 2022.07.20 |
7. Spring Test (0) | 2022.06.23 |