안녕하세요.
Spring의 OAuth2이용한 소셜로그인 기능 구현은 클라이언트 페이지를 개발하기 위해서 필요한건가요?
현재 프로젝트 중인데 안드로이드, ios개발자가 따로 있고 저는 spring으로 서버를 구축중입니다.
카카오, 구글, 애플로그인을 하기로 했으며, 안드로이드와 ios쪽에서 로그인을 다 마친 뒤 access_token 또는 id_token을 전달하고
저는 전달받은 token을 유효성 검증과 함께 사용자 정보를 빼오려고합니다.
구글의 경우에는 아래와 같이 전달받은 id_token에서 google client API를 이용하여 사용자 정보를 뺴오려고합니다. (https://developers.google.com/identity/sign-in/android/backend-auth)
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.Payload;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
...
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
// Specify the CLIENT_ID of the app that accesses the backend:
.setAudience(Collections.singletonList(CLIENT_ID))
// Or, if multiple clients access the backend:
//.setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3))
.build();
// (Receive idTokenString by HTTPS POST)
GoogleIdToken idToken = verifier.verify(idTokenString);
if (idToken != null) {
Payload payload = idToken.getPayload();
// Print user identifier
String userId = payload.getSubject();
System.out.println("User ID: " + userId);
// Get profile information from payload
String email = payload.getEmail();
boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
String name = (String) payload.get("name");
String pictureUrl = (String) payload.get("picture");
String locale = (String) payload.get("locale");
String familyName = (String) payload.get("family_name");
String givenName = (String) payload.get("given_name");
// Use or store profile information
// ...
} else {
System.out.println("Invalid ID token.");
}
그런데 대다수의 포스팅( https://kevin-park.medium.com/springboot-oauth2-0-reative-client-with-spring-security-a30fe3f7e386, https://nect2r.tistory.com/9 )은 spring의 OAuth2를 통해서 소셜로그인 구축하는데요, 이 과정에서 redirect-uri도 있고 합니다.
저희팀은 ios, android쪽에서 소셜로그인 페이지룰 만드니까 제가 OAuth2 Client 사용하면서 redirect-uri같은걸 구현 할 필요가 없는 경우가 맞나요?
아니면 이러한 플로우에 대해 제가 아예 잘못알고 있는걸까요?
OAuth2개념자체가 좀 어렵네요.. 답변주시면 감사하겠습니다!