우리 같이 협업하자

우리 같이 협업하자

[우협하] 프로젝트 중단

2024년 7월 초, 개인적인 학습이나 개인 프로젝트가 아닌 실전(협업)을 경험하고 싶다는 마음으로 팀 단위 프로젝트를 기획하며 새로운 도전을 시작하게 되었다. 대학 시절의 팀플이나 실습과는 다른, 실제 협업을 경험해 본 것은 이번이 처음이었다.  처음으로 팀 회의를 주도하고, 온라인으로 만난 팀원들의 일정과 역할을 조율하는 일은 나에게 꽤 낯선 일이었다. 특히, 팀원들은 대부분 협업 경험이 있었던 반면, 나는 그런 경험이 없었기 때문에 팀장으로서 부족함이 많았다고 느꼈다. 아마 팀원들 역시 비슷하게 느꼈을 것이다.  그럼에도 불구하고 우리는 프로젝트를 열정적으로 시작했다. 첫 회의에서는 많은 아이디어가 쏟아졌고, 목표 역시 높게 설정했다. 무엇이든 할 수 있을 것 같다는 자신감이 가득했기 때문이다. 팀..

우리 같이 협업하자

[우협하] 토큰 갱신 자동화와 로그인 로직에 대한 고민

모바일 앱 개발에 있어 가장 까다로운 부분 중 하나는 사용자 인증과 보안이라고 생각한다. 특히 이번 프로젝트를 진행하면서 가장 깊이 고민하고 많은 시간을 투자했던 부분이 바로 로그인 로직이었다. 서버와의 안전한 통신부터 민감한 사용자 정보를 저장하는 키체인 관리, 토큰 기반 인증의 구현, 그리고 자동 토큰 갱신까지 - 보안과 사용자 경험 사이에서 최적의 균형을 찾기 위해 고민했던 과정들을 이야기해보고자 한다. 전체적인 로그인 및 토큰 인증 흐름 내가 구현한 전체적인 로그인 및 토큰 인증 흐름을 단계별로 작성해보겠다. 1. 최초 로그인 과정[클라이언트] ----애플 로그인 시도----> [애플 서버][애플 서버] ----인증 코드 반환----> [클라이언트][클라이언트] ----인증 코드와 함께 로그인 요..

우리 같이 협업하자

[우협하] 키체인 도입

모바일 앱에서 민감한 사용자 인증 정보인 액세스 토큰과 리프레시 토큰을 안전하게 저장하는 것은 매우 중요하다. 개발 초기에는 간단한 구현을 위해 UserDefaults를 고려했지만, UserDefaults는 plist 파일 형태로 앱 샌드박스 내에 일반 텍스트로 저장되어 보안에 취약하다. 이러한 보안 위험을 해결하기 위해 iOS의 KeyChain을 도입했다.  TokenStorage 편리한 토큰 관리를 위해 토큰 저장소를 구현했다. 토큰 저장소는 크게 토큰 저장, 토큰 불러오기, 토큰 삭제, 토큰 유효성 검사, 토큰 업데이트 기능을 한다. ✅ 토큰 저장 func saveToken(_ token: String, type: TokenType) throws { let query: [String: ..

우리 같이 협업하자

[우협하] 16주차 회고

16주차는 홈화면 구현을 마치고 아트 맵 인터페이스를 설계하고 UI와 지도 이벤트를 구현했다. 아트맵 아트맵 구현에 있어서 가장 중요했던 것은 사용자의 위치 정보를 정확하게 처리하는 것이었다. 이를 위해 CoreLocation과 RxSwift를 결합하여 LocationService를 구현했는데, 이 과정이 꽤 도전적이었다. LocationService는 위치 권한 상태를 관찰하고 위치 정보를 받아오는 두 가지 주요 기능을 담당한다.  var locationManager: CLLocationManager?private let authorizationStatus = BehaviorSubject(value: .notDetermined)private let locationSubject = PublishSubje..