관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 6. 서버 - OAuth, Key Chain, 로그인 관리 토큰 본문

iOS 실전 (swift)/서버

[iOS - swift] 6. 서버 - OAuth, Key Chain, 로그인 관리 토큰

jake-kim 2020. 4. 25. 15:25

https://documentation.progress.com/output/oe117sp/index.html#page/gssp2/oauth2-concepts-and-terms.html

1. OAuth란?

 - Third-party application의 인증 권한부여 및 관리를 위해서 사용 (특정 쇼핑몰 회원가입시, kakao톡아이디 또는 naver아이디로 회원가입할 수 있는 제 3자의 회원가입 정보를 이용할 수 있는 것)

 

 - 대부분의 서비스는 인증(Authentication)과 권환부여(Authorization)로 구성, 대표적인 방법이 OAuth2.0방법 (Facebook, Google, Twitter들도 사용)

 

- OAuth기반 서버에서 인증이 필요한 API를 호출할 떄에는 이 토큰을 반드시 이용

클라이언트와 서버와의 OAuth방식

핵심은 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"에 저장)

 

열쇠모양이 "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

      기타 Item Class요소

 

kSecClassInternetPassword - Security | Apple Developer Documentation

The value that indicates an Internet password item.

developer.apple.com

        

3) Attributes : "Item Class"의 속성

   kSecClassGenericPassword의 속성은,

      - 공개키*: kSecAttrService

      - 개인키* : kSecAttrAccount

       

 

 

*공개키, 개인키 : 가장 기본적인 암호&복호화 방식은 대칭키(암호화, 복호화 키가 모두 값은 것)인데 이것의 단점을 보완하여,

                          모두가 공유하고 있는 공개적인 암호화 키(공개키)와 자신만이 가지고 있는 키(개인키)로 나눈 것

 

* 더 자세한 정보는 다음 링크 참고

baked-corn.tistory.com/29

Comments