전체 글
-
11월 7일 화요일 TIL 회고록카테고리 없음 2023. 11. 8. 02:28
OAuth2, 일반 로그인 동일하게 처리하기 -2 간단한 복습 일반 로그인과 소셜 로그인 시 발생하는 타입 문제 해결법 이 문제는 인터페이스 다중구현(Multi-Implementation)을 통해 해결할 수 있다. Security가 관리하는 세션인 Security Session에서 Authentication 타입의 객체는 OAuth2User와 UserDetails 타입의 객체만 받을 수 있다. 하지만 PrincipalDetails가 두 인터페이스를 모두 구현한다면 일반 로그인, 소셜 로그인 구분 없이 같은 타입(PrincipalDetails)의 객체로 받아서 처리할 수 있다. PrincipalDetailsImpl.class (일반 로그인) @Getter public class PrincipalDetail..
-
11월 6일 월요일 TIL 회고록카테고리 없음 2023. 11. 7. 02:36
OAuth2, 일반 로그인 동일하게 처리하기 -1 목표 미리보기 OAuth와 일반 로그인은 Authentication에 저장되는 타입이 다르다. 그래서 Controller 등에서 사용할 때 OAuth 로그인 유저와 일반 로그인 유저를 동일한 코드로 처리할 수가 없다. 또, 캐스팅에도 문제가 된다. 따라서 이를 동일한 타입으로 처리할 수 있도록 바꾼다. 아래 글을 읽어보면 이해할 수 있다. OAuth OAuth를 사용하면 구글, 네이버, 카카오, 페이스북 등의 로그인으로 로그인을 지원할 수 있다. Dependency // OAuth2 패키지 implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' OAuth2-Client 라는 ..
-
11월 2일 목요일 TIL 회고록카테고리 없음 2023. 11. 3. 02:35
OAuth2를 적용하고 OAuth2 마무리를 어떻게 해야할지 고민이었다. (며칠동안 생각하고... 구글링하고..) 지금까지 OAuth2 진행사항을 정리해보면.. OAuth2를 사용해서 구글, 카카오, 네이버 로그인 연동은 성공했다. 근데.. UserService 에서 프로필 조회 및 token을 가져올 때 (리이슈 메서드) 및 로그인을 하면 스프링에선 액세스 토큰, 레디스에는 리프레시 토큰을 저장한다. UserServiceImpl.class (로그인 메서드) @Override @Transactional public TokenResponse login(LoginRequest loginRequest) { User user = userRepository.findByLoginId(loginRequest.getL..
-
10월 27일 금요일 TIL 회고록카테고리 없음 2023. 10. 28. 02:28
구글 OAuth2 로그인 구현 1) application-oauth.yml 구글 OAuth2 설정 구글은 스프링에서 Provider 정보를 내부에서 제공해주기 때문에 설정해주지 않았다. client-id, client-secret,, scope 정보만 기입해주었다. spring: security: oauth2: client: registration: google: client-id: 구글 클라이언트 ID client-secret: 구글 클라이언트 Secret scope: profile, email 2) 구글의 유저정보 Response JSON 예시를 참고해서 스프링 코드 작성 구글의 유저 정보 Response JSON 예시 { "sub": "식별값", "name": "name", "given_name":..
-
10월 26일 목요일 TIL 회고록카테고리 없음 2023. 10. 27. 02:14
네이버 OAuth2 로그인 구현하기 -1 1. application-oauth.yml에 로그인 해당 정보 입력 먼저 application-oauth.yml 파일에 Provider를 입력해주었다. spring: security: oauth2: client: registration: naver: client-id: 클라이언트ID client-secret: 클라이언트Secret redirect-uri: "{baseUrl}/{action}/oauth2/code/{registrationId}" # (== http://localhost:8080/login/oauth2/code/naver) authorization-grant-type: authorization_code scope: name, email, profil..
-
10월 25일 수요일 TIL 회고록카테고리 없음 2023. 10. 26. 02:20
카카오 로그인 시 유저네임 null 오류 수정 카카오 로그인 후 h2 console 에서 유저를 확인하면 유저네임이 null로 들어왔다. 2번 아이디가 카카오 로그인으로 회원가입 한 아이디인데 username이 null로 들어간 것을 볼 수 있다. 분명 계획할때는 username이 카카오로 로그인 한 아이디 이름으로 나오게 만들었는데.. 왜 null로 들어오는지 이해가 안됐다. 먼저 카카오의 유저 정보 Response JSON 예시를 살펴보자. 여기서 가져왔다. { "id":123456789, "connected_at": "2022-04-11T01:45:28Z", "kakao_account": { // 프로필 또는 닉네임 동의 항목 필요 "profile_nickname_needs_agreement": f..
-
10월 24일 화요일 TIL 회고록카테고리 없음 2023. 10. 25. 02:42
OAuth2 API 테스트 하면서 나왔던 에러들 정리 1. 400 invalid_request 이 에러에서 많은 시간을 소비했다.. 구글링을 하고 해결 방법들을 따라해봐도 소용이 없었다. 이 에러가 출력하는 시점은 프론트에서 카카오 로그인을 하면 LoginFailureHandler에서 에러를 발생시켰다. 해결하려고 시도했던 방법은 1. application-oauth.yml 수정 kakao: client-id: 클라이언트 ID client-secret: 클라이언트 비밀번호 redirect-uri: http://localhost:8080/login/oauth2/code/kakao client-authentication-method: POST authorization-grant-type: authorizat..
-
10월 20일 금요일 TIL 회고록카테고리 없음 2023. 10. 20. 21:58
그동안 TIL을 쓰지 못했다. 쓰지 못한 이유는 저번 TIL 에서 적은 이 오류때문에.. 작성하지 못했다. Parameter 0 of method setFilterChains in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type 'org.springframework.security.oauth2.client.registration.ClientRegistrationRepository' that could not be found. 고치기 위해서 구글링 및 스택오버플로우를 참고하며 고쳐보려했는데 공통적인 답변은 application.yml에서 이 부분을 누락..