본문 바로가기
iOS/develop log

iOS감자의 파란만장한 로그인 구현기 1. 로그인 구현의 시작 ( feat. 로그인 구현할 때 알아야 할 것들.)

by 개발하는 감자입니다 2024. 7. 7.
728x90

 

이번 포스팅은 설명을 중심보다는 기록이 중심입니다.

로그인을 구현하시는 다른 iOS 개발자분들에게 제 삽질과 기록이 도움이 되길 바라며...🍀

 


1. 내가 로그인을 하라구..?

머플러라는 대형 프로젝트를 진행 중이다.

머플러는 소비목표를 달성하게끔 도와주는 iOS 어플로, 담당 역할은 원래 소비등록, 마이페이지 였다.

우리 팀의 목표는 최종적으로 앱스토어에 앱을 출시하는 것인데, 로그인을 담당한 분이 중간에 빠지게 되어서 로그인 관련 모든 걸 내가 맡게 되었다. 다른 분들은 맡은 기능을 구현하는데에도 시간이 없으셨기 때문에 어쩔 수 없었던 부분이다.

 

컴공 졸업생인데 어떻게 로그인을 구현을 안 해봤나? 궁금할 수 있지만, 이 전까지는 프로젝트를 하더라도 출시까지 가는 일이 거의 없었다.

거의 모든 프로젝트에서 기능 구현만 하고 유지보수는 해본 적이 없었다. 그리고, 서버 4명 프론트 4명 디자이너 1명이 있는 대형 프로젝트이기 때문에 이전과는 차원이 다른 것들을 배울 수 있었다. (이와 관련된 부분은 나중에 또 정리해야지!)

 

로그인 담당 서버 분과 많은 이야기를 나누며 일단 로그인과 토큰, 세션에 관한 내용을 이해하려고 했다.

이전까지의 나는 토큰은 들어본 적이 있는데,,, 이게 정확히 로그인에서 어떤 기능을 하는 건지도 잘 몰랐다. 

 

전체적인 흐름을 정리하며 서버와 싱크를 맞추려고 했고, 아무래도 서버와의 커뮤니케이션이 가장 중요한 부분이 로그인이 아닐까 싶었다.

그 이유는 다른 api 를 활용할 때에는 데이터를 잘 받아왔는지만 확인하면 됐는데, 로그인은 세션이라는 부분까지 신경써야 하고 보안과도 관련이 있기 때문에 특히 신경써야 하는 부분이라고 생각이 들었기 때문이다.

 

2. 프론트가 로그인을 구현할 때에 알아야할 것들.

1. 서버에서 필요로 하는 id 등 정보가 무엇인지 알아두기 

애플 로그인과 같은 경우에는 로그인, 탈퇴를 할 때에 인가 코드를 갱신하여 서버에 넘겨줘야 한다. 이를 어떻게 구현하고 인가 코드를 어떤 형식으로 넘겨줘야 하는지 잘 파악하고 구현해야 한다.
(그래서, 우리 팀은 애플 로그인과 카카오톡 로그인을 구현했는데 두 개가 로직이 좀 다르다.)

 

2. 토큰을 어떻게 저장할 것인가?

로그인을 하면 서버에서 토큰을 준다. 이 토큰은 쉽게 생각하면 서버에서 로그인을 한 사람들에게 부여해주는 열쇠로 생각하면 된다. 이 열쇠가 있어야 서버에 진입할 수가 있다. 없으면 서버와 아무런 통신을 못한다. 그 만큼 중요하고 유출되어서도 안 된다!!... iOS에는 UserDefaults라는 간단한 저장소를 제공한다. 간단해서 암호화되지 않고, 중요한 데이터나 민감한 정보를 저장하는 데 적합하지 않다. 이를 그럼 어떻게 더 잘,, 안전하게 저장할 것인지도 생각해야 한다.

 

3. 세션 만료할 때 갱신은 어떻게 할 것인가?

위 2번의 토큰과 관련된 내용이다. 토큰에는 액세스 토큰과 리프레시 토큰이 있다. 액세스 토큰은 서버에 접근할 수 있는 열쇠고, 사용기한이 만료되면 리프레시 토큰으로 서버에 다시 액세스 토큰을 발급받아야 한다. 유저가 잘 사용하다가 토큰 만료기한이 끝나버리면 어떻게 토큰을 갱신해줄지도 고민을 해봐야 한다. 그냥 로그인 화면을 냅다 보낼지, 아니면 대기 화면에서 갱신을 하고 실패하면 로그인화면으로 보낼지.. 원래 이는 기획을 할 때에 생각해봐야 하는 문제인데, 디자이너 분이 기획을 같이 하시고 이 부분에 대해서는 딱히 언급이 없어서 나는 내 마음대로 했다. 유저 입장에서 가장 편할 것 같은 로직으로 구현했다.. 

 

 

3.  후기 : 나는 힘들었어.. 로그인

갑자기 맡게 된 로그인 구현이 좀 벅차게 느껴졌고, 서버에서 API가 다 구현된 채로 개발을 시작한 것도 아니라서 내 코드가 맞는 건지 잘 동작하는지 확인하기도 쉽지 않았다. 또한, 처음해보기도 하고 혼자 해내야 하는 압박감, 로그인이 중요해보이지 않아도 앱에서 가장 기본이라서 되게 막중하게 느껴져서 더 힘들었던 것 같다. 하지만, 잘 해냈다..! 거의 3개월은 걸린 것 같은데 그 동안 삽질도 많이 하기도 했다. iOS 관련 로그인 구현 후기는 자료가 많이 없는 것 같아서 더 힘들었다...🥹 그래도 해낸 나 개발감자. 칭찬해~~


후기는 여기까지. 구현에 대한 더 자세한 포스팅은 아래를 참고해줘!! (더 업데이트 될 예정.)

 

 

[로그인] KeyChain으로 토큰 저장하기 (UserDefault와의 차이점)

안녕하세요! 개발감자입니다. 앱의 로그인 기능을 구현하면서 토큰을 저장하는 방법에 대해 고민이 많았습니다. 어떻게 저장해야 하는지 고민해보며 작성해본 글이니, 토큰을 저장하려고 하는

qkrrmsdud.tistory.com

 

 

 

728x90
반응형