[iOS] - LocalAuthentication(TouchID, FaceID)

sun02·2022년 1월 3일
0

100 days of Swift 

목록 보기
40/40

LocalAuthentication 프레임워크의 일부인 TouchID 와 FaceID를 사용하는 방법입니다.

이 작업은 아래의 순서에 따라 실행됩니다.

  1. 생체 인증(Biometric Authentication)을 지원하는 기기인지 확인합니다.
  2. 생체 인증을 지원한다면, 생체 측정 시스템이 지금 작동하도록 요청합니다.
    • Touch ID 의 경우 요청 메세지를 코드로 작성하고
    • Face ID의 경우 요청 메세지를 Info.plist에서 작성합니다.
  3. 인증 요청에서 성공한다면, 기기의 소유자이므로 앱을 unlock 합니다. 성공하지 못한다면 에러 메시지를 보여줍니다.

1. LocalAuthentication

가장 먼저 LocalAuthentication 프레임워크를 가져옵니다.

import LocalAuthenticaion
import UIKit

2. authentication method 작성

Authentication을 실행하게하는 method를 작성합니다.
저는 authentication 이라는 버튼을 누르는 경우 생체 인증을 시도하는 메서드를 실행하도록 작성해주었습니다.

- is Biometric Authentication available?

위에서 언급했듯이, 가장 먼저 생체 인증이 가능한 기기 인지 확인해야합니다.

따라서 LAContext()의 canEvalutedPolicty 메서드를 사용하여 ".deviceOwnerAuthenticationWithBiometrics"를 요청합니다

  • 생체 인증이 가능한 경우, 그 뒤 생체 인증을 요청하는 코드를 작성하고 가능하지 않은 경우, alert을 띄워 가능하지 않다는 메시지를 보여줍니다.
  • LAContext() : A mechanism for evaluating authentication policies and access controls. -> Apple document

다음을 빌드 해 보면

생체인증이 불가한 경우

생체인증이 가능한 경우

다음과 같이 나타납니다.

- Biometric Authentication Success or Not

생체 인증을 지원하는 경우 위의 2번을 위해 evaluatePolicy 메서드를 사용하여 생체인증을 요청합니다.


클로져를 사용하여 성공(success)하는 경우 unlockSecretMessage()메서드를 실행하고 실패(authenticationError)하는 경우 실패 alert을 띄우도록 합니다.

  • 생체인증의 성공 여부를 알리는 것(alert)이 메인 스레드에 있지 않을 수도 있기 때문에 async()를 사용하여 UI관련 스레드를 메인스레드에서 보여질 수 있게 합니다.
  • 여기서 작성된 reason은 TouchID 를 사용할 때 사용자에게 보여지고 FaceID를 사용할 때 보여질 허가를 요청하는 reason은 Info.plist에서 작성한 것이 보여집니다.

Info.plist 에서 FaceID - reason 작성

FaceID의 사용 허가 이유는 다음과 같이 작성합니다.

시뮬레이터에서 다음과 같이 나타납니다.

3. 시뮬레이터에서 Face ID 상태 설정

- Face ID available

시뮬레이터를 실행한 상태에서

Features > Face ID > Enrolled (체크)

- Face ID Success

생체 인증 성공 상태로 설정

Features > Face ID > Matching Face
선택시 바로 성공 상태로 시뮬레이터의 상태가 변경됩니다.

0개의 댓글