안녕하세요 SpringBoot의 SpringSecurity를 이용하여 OAuth2 카카오 로그인 연동중인 개발자입니다.
구글,페이스북은 시큐리티에서 제공해서 사용했는데, 네이버,카카오는 provider를 직접 생성해서 만들어야하는 걸로 알고있습니다.
네이버는 잘 됐는데, 카카오는 되지 않아서 몇 가지 문의를 드립니다.
- Redirect URI
- Redirect URI 포트를 80,443번만 제공한다고 적혀있는데, 정말 8080은 안되고 80과 443인 URI만 가능한가요?
- properties와, 카카오 사이트의 어플리케이션 내에 Redirect URI에
흔히 사용하는 http://localhost/login/oauth/code/kakao 로 작성했는데 /login?error로 넘어갔고,
예시에 나와있는 대로 http://localhost/oauth 로 작성하면 code 값을 들고 /login uri로 넘어갔습니다.
Getmapping값을 /oauth로 하면 해당 컨트롤러에 접근도 하여 code 값 추출도 가능합니다.
결론적으로는 Redirect URI 의 값도 /oauth 로 정해져있는건지 궁금합니다.
- 시큐리티 연동 관련
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
.....
// OAuth 로그인
.oauth2Login() // OAuth2 설정 시작
.loginPage("/login") // 로그인 페이지
.userInfoEndpoint() // OAuth2 성공 히우 설정을 시작
.userService(customOAuth2UserService); // customOAuthUserService 에서 처리
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
....
OAuth2User oAuth2User = super.loadUser(userRequest);
OAuth2UserInfo oAuth2UserInfo = null;
String provider = userRequest.getClientRegistration().getRegistrationId(); // google or naver
...
}
다른 SNS로그인에서는 시큐리티를 통해 customOAuthService의 loadUser를 호출하여 service 메소드에서 구현을 하는데,
카카오 로그인은 해당 service를 타지 않고 위의 Redirect URI의 매핑값으로 넘어갑니다.
카카오 로그인은 시큐리티의 해당 oauthLogin()을 타지 않는 것인지, 아니면 제가 Redirect URI에 대한 이해도가 부족한 것인지 잘 모르겠습니다.
알려주시면 감사하겠습니다.