[swift] Swift KeychainAccess를 사용하여 사용자의 로그인 정보를 안전하게 저장하는 방법

iOS 앱에서 사용자의 로그인 정보를 안전하게 저장하려면 암호화된 형식으로 정보를 저장할 수 있는 Swift KeychainAccess 라이브러리를 사용할 수 있습니다. Keychain은 시스템 레벨의 보안 저장소로, 앱의 데이터를 암호화하여 안전하게 관리하는 용도로 사용됩니다.

Swift KeychainAccess 라이브러리 설치

Swift KeychainAccess 라이브러리를 설치하기 위해 먼저 프로젝트의 Podfile에 다음과 같이 추가합니다.

target 'YourApp' do
  pod 'KeychainAccess'
end

그리고 나서 터미널에서 pod install 명령을 실행하여 라이브러리를 설치합니다.

사용자 정보 저장

사용자의 로그인 정보를 Keychain에 저장하기 위해 다음과 같은 단계를 따릅니다.

  1. KeychainAccess 라이브러리를 import 합니다.
import KeychainAccess
  1. Keychain 인스턴스를 생성합니다.
let keychain = Keychain()
  1. 사용자 정보를 Keychain에 저장합니다. 여기서는 사용자의 로그인 이름과 비밀번호를 저장하는 예제를 보여줍니다.
let username = "johnappleseed"
let password = "password"

do {
    try keychain
        .label("Login Information")
        .accessibility(.whenUnlocked)
        .set(password, key: username)
} catch let error {
    print("Error saving user info: \(error.localizedDescription)")
}

저장할 정보를 설정하고 set(_:key:) 메소드를 사용하여 Keychain에 값을 저장할 수 있습니다. accessibility 메소드를 사용하여 저장된 정보에 액세스할 수 있는 시기를 지정할 수도 있습니다.

사용자 정보 검색

Keychain에 저장된 사용자 정보를 검색하기 위해 다음과 같은 단계를 따릅니다.

  1. KeychainAccess 라이브러리를 import 합니다.
import KeychainAccess
  1. Keychain 인스턴스를 생성합니다.
let keychain = Keychain()
  1. Keychain에서 사용자 정보를 검색합니다. 여기서는 저장된 사용자의 로그인 이름을 기반으로 비밀번호를 검색하는 예제를 보여줍니다.
let username = "johnappleseed"

do {
    if let password = try keychain
        .accessibility(.whenUnlocked)
        .get(username) {
        print("Password for \(username): \(password)")
    } else {
        print("No password found for \(username)")
    }
} catch let error {
    print("Error retrieving password: \(error.localizedDescription)")
}

검색할 사용자 정보의 키를 기반으로 get(_:) 메소드를 사용하여 Keychain에서 값을 검색할 수 있습니다.

사용자 정보 삭제

Keychain에서 사용자 정보를 삭제하기 위해 다음과 같은 단계를 따릅니다.

  1. KeychainAccess 라이브러리를 import 합니다.
import KeychainAccess
  1. Keychain 인스턴스를 생성합니다.
let keychain = Keychain()
  1. Keychain에서 사용자 정보를 삭제합니다. 여기서는 저장된 사용자의 로그인 이름을 기반으로 비밀번호를 삭제하는 예제를 보여줍니다.
let username = "johnappleseed"

do {
    try keychain
        .accessibility(.whenUnlocked)
        .remove(username)
} catch let error {
    print("Error removing password: \(error.localizedDescription)")
}

삭제할 사용자 정보의 키를 기반으로 remove(_:) 메소드를 사용하여 Keychain에서 값을 삭제할 수 있습니다.

결론

Swift KeychainAccess 라이브러리를 사용하면 iOS 앱에서 사용자의 로그인 정보를 안전하게 저장할 수 있습니다. Keychain은 시스템 레벨의 보안 저장소이므로, 암호화된 형식으로 사용자 정보를 저장하여 앱의 보안을 강화할 수 있습니다.

참고 자료