chaeppy
42
2021-09-02 17:18:23 작성 2021-09-02 17:25:03 수정됨
2
611

Spring의 OAuth2 이용한 소셜로그인 기능 구현은 클라이언트 페이지를 개발하기 위해서 필요한건가요?


안녕하세요. 

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개념자체가 좀 어렵네요.. 답변주시면  감사하겠습니다!


0
  • 답변 2

  • 훈마로
    1k
    2021-09-02 17:38:59

    정책과 플로우에 따라 다릅니다.

    네이티브앱에서 각 SNS 프로바이더의 SDK를 통해 소셜 로그인을 연동할 수 있습니다.

    백엔드를 통해서 연동한다면, 웹뷰로 인증, 동의 화면을 띄울 수 있도록 처리해줘야겠죠.

  • chaeppy
    42
    2021-09-02 18:54:47

    감사합니다~

  • 로그인을 하시면 답변을 등록할 수 있습니다.