[swift] Swift에서 키체인을 사용하여 사용자 프로필 저장하기

앱에서 사용자 프로필을 안전하게 저장하고 관리해야 할 때가 있습니다. Swift에서는 키체인(Keychain)을 사용하여 사용자의 중요한 정보를 안전하게 저장할 수 있습니다. 이번 블로그 포스트에서는 Swift에서 키체인을 사용하여 사용자 프로필을 저장 및 불러오는 방법에 대해 알아보겠습니다.

키체인(Keychain)이란?

키체인은 암호화된 데이터를 안전하게 저장하는 운영체제 수준의 서비스입니다. 앱에서 사용자의 비밀번호, 토큰, 키 등 중요한 정보를 저장할 때 사용할 수 있습니다. 키체인은 앱 데이터 폴더 외부에 저장되기 때문에 앱이 삭제되어도 데이터가 남아있습니다.

키체인에 사용자 프로필 저장하기

먼저, Security 프레임워크를 임포트해야 합니다. 키체인에 접근하기 위해서는 해당 프레임워크를 사용해야 하기 때문입니다.

import Security

기본적으로, 키체인은 딕셔너리 형태의 정보를 저장합니다. 키체인에 사용자 프로필을 저장하기 위해 우리는 딕셔너리를 생성하고 사용자의 이름, 이메일 등을 저장할 수 있습니다.

let profile: [String: Any] = [
    kSecClass as String: kSecClassGenericPassword,
    kSecAttrService as String: "com.example.app",
    kSecAttrAccount as String: "user@example.com",
    kSecAttrAccessible as String: kSecAttrAccessibleAlwaysThisDeviceOnly,
    kSecValueData as String: "user profile data".data(using: .utf8)!
]

위의 코드에서 kSecClass, kSecAttrService, kSecAttrAccount, kSecAttrAccessible, kSecValueData는 키체인 딕셔너리의 키입니다. 이를 통해 저장하고자 하는 데이터의 타입, 서비스 이름, 계정 이름, 접근 권한 등을 설정할 수 있습니다.

키체인에 저장하기 위해 SecItemAdd 함수를 사용합니다.

let status = SecItemAdd(profile as CFDictionary, nil)
if status == errSecSuccess {
    print("프로필 저장 성공")
} else {
    print("프로필 저장 실패")
}

프로필을 저장할 때 에러가 발생하지 않았을 경우 "프로필 저장 성공"이 출력됩니다.

키체인에서 사용자 프로필 불러오기

저장된 사용자 프로필을 키체인에서 불러오기 위해서는 해당 프로필을 가져올 딕셔너리를 생성해야 합니다.

let query: [String: Any] = [
    kSecClass as String: kSecClassGenericPassword,
    kSecAttrService as String: "com.example.app",
    kSecAttrAccount as String: "user@example.com",
    kSecReturnData as String: kCFBooleanTrue!,
    kSecMatchLimit as String: kSecMatchLimitOne
]

위의 코드에서 kSecReturnData는 저장된 데이터를 반환하도록 지정하는 키입니다.

키체인에서 프로필을 불러오기 위해 SecItemCopyMatching 함수를 사용합니다.

var result: AnyObject?
let status = SecItemCopyMatching(query as CFDictionary, &result)
if status == errSecSuccess, let data = result as? Data {
    if let profile = String(data: data, encoding: .utf8) {
        print("사용자 프로필: \(profile)")
    }
} else {
    print("프로필 불러오기 실패")
}

프로필을 불러올 때 에러가 발생하지 않았을 경우, 해당 프로필이 출력됩니다.

결론

Swift에서 키체인을 사용하여 사용자 프로필을 저장하고 불러오는 방법에 대해 알아보았습니다. 키체인은 중요한 정보를 안전하게 저장하고 관리할 수 있는 강력한 도구입니다. 앱에서 사용자 프로필과 같은 중요한 데이터를 보호하기 위해 키체인을 적극 활용해보세요.

참고: Apple Developer Documentation