분류 전체보기

우리 같이 협업하자

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

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

우리 같이 협업하자

[우협하] 키체인 도입

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

iOS

[iOS] KeyChain(키체인)에 대해 알아보자.

알고가자 ! 키체인을 알아보기 전에 토큰에 대해 알아보자. ✅ 토큰(Token) 토큰은 사용자의 신원을 증명하고 서버에 접근 권한을 부여하는 암호화된 문자열이다. 기존의 세션-쿠키 방식과 달리, 서버가 클라이언트의 상태를 저장하지 않는 무상태 인증(Stateless) 방식이다. ✅ JWT(JSON Web Token) JWT는 토큰의 대표적인 형식으로, JSON 객체를 암호화하여 만든 문자열이다. Header(토큰 타입, 암호화 알고리즘), Payload(사용자 정보, 권한 등), Signature(위변조 검증용) 세 부분으로 구성된다. ✅ 액세스 토큰(Access Token) 액세스 토큰은 실제로 보호된 리소스에 접근할 때 사용하는 토큰이다. 탈취되더라도 피해를 최소화하기 위해 짧은 유효기간(보통 30분..

우리 같이 협업하자

[우협하] 16주차 회고

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