Search
Duplicate

Local Authentication을 이용해 생체인증 구현해보기!

생성일
2024/07/03 06:52
태그
슬기로운 인턴생활
비플페이에 생체인증이 있어 한번 공부해보고 싶어서 해보기로 했다 ㅎㅎ
LocalAuthentication 프레임워크 → 인증 기능

Local Authentication

Authenticate users biometrically or with a passphrase they already know. 생체 인식 또는 이미 알고 있는 암호로 사용자를 인증한다.
보안상 앱이 직접적으로 인증 데이터에 접근할 수 없도록 되어 있다.
그 대신 하드웨어 기반 보안 프로세서인 Secure Enclave 가 인증 데이터를 관리한다.
그래서 앱이 LocalAuthentication 을 통해서 인증을 요청하면, 앱은 인증 결과만 받을 수 있다.
LocalAuthentication Secure Enclave

Set the Face ID Usage Description

생체 인식을 사용하는 모든 프로젝트에서 앱의 Info.plist 파일에 NSFaceIDUsageDescription 키를 포함한다.
이 키가 없으면 시스템에서 앱이 Face ID를 사용하는 것을 허용하지 않는다.
이 키의 값은 앱이 처음으로 Face ID를 사용하려고 시도할 때 시스템이 사용자에게 표시하는 문자열이다.

예제코드

// // ContentView.swift // LocalAuthenticationEx-SwiftUI // // Created by Hyungjun KIM on 7/5/24. // import SwiftUI import LocalAuthentication struct ContentView: View { @State private var laLabel = "버튼을 눌러 생체인식을 시작하세요." var body: some View { VStack { Text(laLabel) .padding() Image(systemName: "faceid") .resizable() .frame(width: 100, height: 100) .padding() Button(action: { authenticateUser() }) { Text("Start Biometric Authtication") .padding() .background(Color.blue) .foregroundColor(.white) .cornerRadius(8) } } } func authenticateUser() { let context = LAContext() var error: NSError? if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) { let reason = "생체인식을 사용하여 인증하세요." context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) { success, authenticationError in DispatchQueue.main.async { if success { self.laLabel = "생체인식이 성공적으로 이루어졌습니다." } else { self.laLabel = "생체인식에 실패했습니다. 다시 시도하세요." } } } } else { DispatchQueue.main.async { self.laLabel = "생체인식을 사용할 수 없습니다. 설정에서 생체인식을 활성화하세요." } } } } #Preview { ContentView() }
Swift
복사

결과물

SwiftUI 버전
SwiftUI 버전
SwiftUI 버전
UIKit 버전