[swift] Swift에서 키체인을 사용하여 마지막 로그인 정보 저장하기

iOS 앱을 개발하다보면 사용자가 마지막으로 로그인한 정보를 저장해야하는 경우가 많습니다. 이를 위해 Swift에서는 키체인을 사용할 수 있습니다. 키체인은 사용자의 민감한 정보를 안전하게 보관할 수 있는 공간입니다.

키체인에 접근하기

Swift에서 키체인에 접근하기 위해서는 Security 프레임워크를 사용해야 합니다. 먼저, KeychainAccess 라이브러리를 프로젝트에 추가하겠습니다. 이 라이브러리는 키체인을 간편하게 다룰 수 있도록 도와줍니다.

import KeychainAccess

로그인 정보 저장하기

마지막으로 로그인한 정보를 저장하기 위해서는 키체인에 해당 정보를 저장해야 합니다. 예를 들어, 사용자의 로그인 아이디와 암호를 저장한다고 가정해보겠습니다.

let keychain = Keychain(service: "com.example.app") // 키체인 서비스 식별자 설정

do {
    try keychain
        .accessibility(.whenUnlockedThisDeviceOnly) // 키체인 데이터 접근 가능 시기 설정
        .set("testuser", key: "username") // 로그인 아이디 저장
        .set("password123", key: "password") // 암호 저장
} catch {
    print("Failed to save login information: \(error)")
}

위의 코드에서 Keychain(service) 메소드를 사용하여 키체인 서비스 식별자를 설정합니다. 그리고 해당 식별자로 키체인 객체를 만들어 사용합니다.

accessibility 메소드를 사용하여 키체인 데이터 접근 가능 시기를 설정할 수 있습니다. whenUnlockedThisDeviceOnly 옵션을 선택하면 디바이스가 잠겨있을 때는 키체인에 접근할 수 없으며, 암호가 잠겨있는 상태일 때만 접근 가능합니다.

set 메소드를 사용하여 로그인 정보를 저장합니다. 첫 번째 인자는 실제 데이터이고, 두 번째 인자는 해당 데이터에 대한 키입니다.

로그인 정보 불러오기

저장된 로그인 정보를 불러오기 위해서는 다음과 같이 코드를 작성합니다.

do {
    if let username = try keychain.getString("username"), // 로그인 아이디 불러오기
       let password = try keychain.getString("password") { // 암호 불러오기
        print("Username: \(username)")
        print("Password: \(password)")
    } else {
        print("No login information found.")
    }
} catch {
    print("Failed to load login information: \(error)")
}

getString 메소드를 사용하여 저장된 로그인 아이디와 암호를 불러옵니다. 반환되는 값은 옵셔널 타입이므로, 값이 있는지 확인한 뒤 사용하면 됩니다.

결론

이제 Swift에서 키체인을 사용하여 마지막 로그인 정보를 안전하게 저장하고 불러올 수 있습니다. 키체인을 사용하면 사용자의 민감한 정보를 암호화하여 보관할 수 있으므로, 보안에 대한 고려를 잘 해야 합니다.

참고 자료