🍏/iOS
KeyChainSwift + Alamofire 로 http header에 인증키 실어보내기
eungding
2017. 6. 10. 03:14
728x90
반응형
서버에서 json 형식의 데이터를 받아오려면 HTTP 통신을 해야한다
HTTP 통신 라이브러리의 최강자인 Alamofire를 이용하면 매우 simple 한 request코드를 작성할 수 있다
+
서버가 보안상의 이유로 인증된 사용자 에게만 데이터를 준다고 한다면, 인증된 사용자가 보낸 request 인지를 어떻게 알 수 있을까?
HTTP 헤더에 Authorization 이란 key 값으로 서버가 " 인증된 사용자구나 OK! " 할 수 있는 value 값을 보내면 된다
이 access_key 는 앱에서 여러 API를 호출할때 마다 헤더에 실어보내야하므로 안전한 곳에 저장하여 어디서나 접근 가능하게 할 수 있어야한다
이를 위한 라이브러리로는 Keychain-swift 를 추천한다 ( 사용법도 매우 간단하고 안전성도 좋은 것 같고 여러 디바이스 간의 싱크도 제공한다 굿굿 )
KeychainSwift에 access_key를 저장 (key - value 값으로)
KeychainSwift().set(access_key, forKey: "access_key") | cs |
key값으로 해당 value값을 가져온다
KeychainSwift().get("access_key")! //String? 값을 리턴해주므로 !를 붙여서 옵셔널을 해제하고 String값만 | cs |
이제 request 해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | let url = "http://www......." let headers: HTTPHeaders = ["Authorization" : KeychainSwift().get("access_key")!] let request = Alamofire.request(url,headers:headers) .responseJSON{ (responseObject) in if responseObject.result.isSuccess { } if responseObject.result.isFailure { } } debugPrint(request) | cs |
request를 찍어보면
-H "Authorization: access_key값"
를 확인할 수 있다
반응형