티스토리 뷰

이력서를 완성하고, 면접 본다고 오랜만에 정리하게 되었다.

코딩 테스트로 Oath 2를 이용한 로그인 시스템을 구현하게 되었는데,

앞으로도 종종 사용할 것 같으니 잊어버리기 전에 정리하기로 하겠다.



흔히 볼 수 있는 Naver, Google 등의 계정으로 특정 웹 혹은 앱에 로그인 하는 것이 Oath 2이다.

그 외에도 API를 가져와 사용할 수 있는 표준 기술이며 구현하기도 까다롭고,

보안상의 문제로 인해 Spring boot 나 API를 제공하는 서버는 SDK를 제공해주니 참고해서 만들면 된다. 

 

참고로 이해 안하고 SDK만 가져다 쓰면 나중에 확장할 때 

매우 격하게 삽질할 수 있으니 Oath 2의 구동 방식을 반드시 이해하길 추천한다. 

 

<Client = 개발자가 만든 서비스>

<Server = google, naver, kakao 등 API 제공자>

<User = Server와 Client를 사용하는 사용자>

 

1. Client는 특정 Server에서 제공하는 어떠한 데이터를 가져와 사용하려 한다.

그럼 맨 처음으로 해야 할 일은 Server에 "어떠한 기능을 사용할 겁니다" 하고 승인을 받아야 할 것이다.

하지만 Server 측은 사용하려는 "Client"가 누군지 모른다.

그러니 서버에 내가 어떠한 Client인지 사용자 인증을 진행하면,

승인한다는 결과 값으로 Client ID와 Client Secret을 발급해준다.



2. User가 Client에게 데이터를 주기로 했는지 Server는 모르니 이번에는 User에게 물어본다.

User가 승인한다면 Server는 Client에게 Authorization Code라는 것을 발급해준다.

이게 바로 User가 승인했다는 걸 알려주는 용도라고 생각하면 이해하기 좀 더 쉬울 거다.



그럼 이제 Authorization Code도 받았겠다.

진짜로 API를 가져와서 데이터 사용할 수 있겠네?

세상은 그리 쉽지 않았다.

3. 이번에는 Server가 Client에게 Client ID와 Client Secret, Authorization Code 을 내놓으라고 요구한다.

이걸 Client에서 주면 드디어 Access token이라는 것을 준다.

 

4 . 드디어 Access token을 이용하여 원하는 데이터를 획득할 자격을 얻었다.

이제 얻은 데이터를 지지고 볶으시면 됩니다.

 

간략 정리

1. Client가 Server에 API 요구 -> Client 인증 시 Client ID, Client Secret 발급  

2. Client는 Server가 제공해주는 SDK를 사용하여 Server Login과 인증창 호출 

3. User가 Client에 접근 

4. Client에서 호출한 로그인, 인증 창을 User에 보여줌 

5. User는 로그인하고, 인증함 

6. Server에서 확인 후 Authorization Code를 Client에 전달. 

7. Client는 User가 로그인하는 것 처럼 Client ID, Client Secret으로 확인하고, 

   받은 Authorization Code를 전달해서 User에게 승인받았다는 것을 알려줌.  

8. Server에서 Access token을 Client에 전달. 

9. Client에서 받은 Access token을 이용하여 원하는 데이터를 얻음 

10. 이제 지지고 볶은 뒤 User에게 서비스를 제공해줌.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함