iOS/Swift
iOS Keychain 사용 방법과 예제
당근쥬스
2023. 10. 26. 10:48
반응형
소개
iOS 앱에서 민감한 정보를 안전하게 저장하려면 Keychain을 사용하는 것이 좋습니다. Keychain은 iOS 시스템에서 제공하는 안전한 저장소로, 패스워드, 토큰, 인증 정보 등을 안전하게 보관할 수 있습니다. 이번 포스트에서는 iOS Keychain의 사용 방법과 예제 코드를 소개합니다.
Keychain 사용 방법 :
1. Security.framework 추가
먼저 프로젝트에 `Security.framework`을 추가해야 합니다. 이 프레임워크는 Keychain에 접근할 수 있는 메서드를 제공합니다.
2. KeychainWrapper 클래스 생성
Keychain 접근을 간편하게 하기 위해 `KeychainWrapper` 클래스를 생성합니다. 이 클래스는 Keychain에 값을 저장하고 가져오는 등의 작업을 수행합니다.
import Foundation
import Security
class KeychainWrapper {
// ...
}
3. 값 저장하기
static func saveValue(_ value: String, forKey key: String) {
let data = value.data(using: .utf8)!
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: key,
kSecValueData as String: data
]
SecItemDelete(query as CFDictionary)
let status = SecItemAdd(query as CFDictionary, nil)
assert(status == errSecSuccess, "Failed to save value in Keychain")
}
4. 값 불러오기
static func loadValue(forKey key: String) -> String? {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: key,
kSecReturnData as String: kCFBooleanTrue!,
kSecMatchLimit as String: kSecMatchLimitOne
]
var dataTypeRef: AnyObject?
let status = SecItemCopyMatching(query as CFDictionary, &dataTypeRef)
if status == errSecSuccess, let data = dataTypeRef as? Data {
return String(data: data, encoding: .utf8)
} else {
return nil
}
}
예제 코드 :
1. 값 저장하기
KeychainWrapper.saveValue("mySecretToken123", forKey: "AuthToken")
2. 값 불러오기
if let authToken = KeychainWrapper.loadValue(forKey: "AuthToken") {
print("AuthToken: \(authToken)")
} else {
print("AuthToken not found")
}
결론
iOS Keychain은 민감한 정보를 안전하게 보관할 수 있는 훌륭한 방법입니다. 이번 포스트에서는 Keychain을 설정하고 값을 저장하고 불러오는 간단한 예제를 살펴보았습니다. 이를 통해 앱에서 보안을 강화하고 사용자 데이터를 안전하게 관리할 수 있습니다.
반응형