일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- combine
- Xcode
- Clean Code
- 리펙터링
- HIG
- UICollectionView
- ios
- 애니메이션
- Protocol
- Observable
- 클린 코드
- 리팩토링
- SWIFT
- UITextView
- MVVM
- RxCocoa
- swiftUI
- 리펙토링
- ribs
- Human interface guide
- collectionview
- Refactoring
- tableView
- swift documentation
- clean architecture
- uitableview
- map
- uiscrollview
- rxswift
- 스위프트
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] 6. 서버 - OAuth, Key Chain, 로그인 관리 토큰 본문
1. OAuth란?
- Third-party application의 인증 권한부여 및 관리를 위해서 사용 (특정 쇼핑몰 회원가입시, kakao톡아이디 또는 naver아이디로 회원가입할 수 있는 제 3자의 회원가입 정보를 이용할 수 있는 것)
- 대부분의 서비스는 인증(Authentication)과 권환부여(Authorization)로 구성, 대표적인 방법이 OAuth2.0방법 (Facebook, Google, Twitter들도 사용)
- OAuth기반 서버에서 인증이 필요한 API를 호출할 떄에는 이 토큰을 반드시 이용
핵심은 Clinet쪽에서 Server의 Token을 받으면, 이 Token을 가지고 다시 Server에 요청하여 원하는 자료를 획들 할 수 있는 논리 흐름
* 각 actor에(그림에서 오른쪽 역할들) 대한 정보는 여기에서 확인
2. Token
1) Access Token
- 요청 절차를 정상적으로 종료한 클라이언트에게 발급 (시간제한이 존재)
2) Refresh Token
- 시간제한이 존재하지 않는 Token이며, "Resurce Server"가 아닌 "Authorization Server"에서만 사용가능
3. Key Chain
1) 개념
- Token은 중요한 요소이기 때문에 저장소 암호화되는 장소가 필요, 이곳이 apple의 "Key Chain"장소
(아이클라우드의 로그인 정보, 와이파이의 패스워드, 사파리 로그인 패스워드 자동저장 모두 "Key Chain"에 저장)
2) 특성
- "Key Chain"의 위치는 Sandbox*이므로 앱을 삭제해도 "Key Chain"정보는 삭제되지 않음
- "Key Chain"은 잠금 기능이 있고 잠그면 해제하기 전까지 저장된 데이터에 접근 불가, 그러나 iOS에서는 기기의 잠금이 해제되는 순간 "Key Chain"의 잠금도 함께 해제
*Sandbox : 외부에서 받은 파일을 그자리에서 실해않고 보호된 영역에서 실행시켜 봄으로써 잘못된 파일과 프로그램이 내부시스템에 악영향을 주는 것을 방지하는 기술
4. Key Chain의 구성요소
1) Keychain Item : 키 체인에 저장되는 데이터
2) Item Class : 저장할 데이터의 종류
ID/PW : kSecClassInternetPassword
일반 pw설정 : kSecClassGenericPassword
3) Attributes : "Item Class"의 속성
kSecClassGenericPassword의 속성은,
- 공개키*: kSecAttrService
- 개인키* : kSecAttrAccount
*공개키, 개인키 : 가장 기본적인 암호&복호화 방식은 대칭키(암호화, 복호화 키가 모두 값은 것)인데 이것의 단점을 보완하여,
모두가 공유하고 있는 공개적인 암호화 키(공개키)와 자신만이 가지고 있는 키(개인키)로 나눈 것
* 더 자세한 정보는 다음 링크 참고
'iOS 실전 (swift) > 서버' 카테고리의 다른 글
[iOS - swift] 7. 서버 - Key Chain 핸들링 (1) | 2020.04.25 |
---|---|
[iOS - swift] 5. 서버 - Indicator View (버퍼링 표현) (0) | 2020.04.25 |
[iOS - swift] 4. 서버 - Alamofire를 이용한 회원가입 요청, 응답 (0) | 2020.04.24 |
[iOS - swift] 3. 서버 - Alamofire (RESTful API) (0) | 2020.04.24 |
[iOS - swift] 2. 서버 - RESTful API 실습 (Foundation framework사용) (0) | 2020.04.24 |