개발자들은 네트워크 API와의 통신에 토큰을 사용하여 사용자를 인증하고 보안을 유지하는 경우가 많습니다. 이 토큰을 안전하게 저장하고 관리하기 위해 Swift에서는 키체인을 사용할 수 있습니다. 이 글에서는 Swift에서 키체인을 사용하여 네트워크 API 토큰을 관리하는 방법을 알아보겠습니다.
1. 키체인 접근하기
Swift에서 키체인에 접근하기 위해서는 보안 프레임워크인 Security
를 import해야 합니다.
import Security
2. 토큰 저장하기
네트워크 API 토큰을 키체인에 저장하기 위해서는 SecItemAdd
함수를 사용합니다. 아래의 예시 코드는 토큰을 생성하고, SecItemAdd
함수를 사용하여 토큰을 키체인에 저장합니다.
func storeAPIToken(token: String) {
let tokenData = token.data(using: .utf8)
let keychainQuery: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "API_TOKEN",
kSecValueData as String: tokenData,
kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlocked
]
let status = SecItemAdd(keychainQuery as CFDictionary, nil)
if status != errSecSuccess {
print("Failed to store API token in keychain")
}
}
위의 코드에서 kSecAttrAccount
는 저장할 토큰의 식별자를 나타냅니다. kSecValueData
는 토큰 데이터를 나타내며, kSecAttrAccessible
는 키체인에 저장된 데이터의 접근 가능성을 정의합니다.
3. 토큰 불러오기
저장된 API 토큰을 키체인에서 불러오기 위해서는 SecItemCopyMatching
함수를 사용합니다. 아래의 예시 코드는 토큰을 키체인에서 읽어오는 함수를 정의합니다.
func loadAPIToken() -> String? {
let keychainQuery: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "API_TOKEN",
kSecReturnData as String: kCFBooleanTrue!,
kSecMatchLimit as String: kSecMatchLimitOne
]
var result: AnyObject?
let status = SecItemCopyMatching(keychainQuery as CFDictionary, &result)
if status == errSecSuccess, let tokenData = result as? Data {
return String(data: tokenData, encoding: .utf8)
}
return nil
}
위의 코드에서 kSecReturnData
는 토큰 데이터를 반환하도록 지정하고, kSecMatchLimit
은 사용할 수 있는 결과의 최대 개수를 지정합니다.
4. 토큰 삭제하기
만약 저장된 토큰을 삭제하고 싶다면, SecItemDelete
함수를 사용하여 토큰을 삭제할 수 있습니다. 아래의 예시 코드는 토큰을 삭제하는 함수를 정의합니다.
func deleteAPIToken() {
let keychainQuery: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "API_TOKEN"
]
let status = SecItemDelete(keychainQuery as CFDictionary)
if status != errSecSuccess {
print("Failed to delete API token from keychain")
}
}
위의 코드에서 kSecAttrAccount
는 삭제할 토큰의 식별자를 나타냅니다.
마무리
이제 Swift에서 키체인을 사용하여 네트워크 API 토큰을 안전하게 관리하는 방법에 대해 알게 되었습니다. 이를 통해 사용자 인증과 보안에 필요한 토큰을 신뢰할 수 있고 안전하게 사용할 수 있습니다. 예제 코드를 참고하여 자신의 프로젝트에 키체인을 적용해 보세요.