Xamarin.iOS에서 touch IDTouch ID in Xamarin.iOS

Touch ID는 사용자-암호 인증 수단으로 iOS 7에서에서 도입 되었습니다.Touch ID was introduced in iOS 7 as a means of authenticating the user - similar to a passcode. 그러나 장치를 잠금 해제, 앱 스토어를 사용 하 여, iTunes를 사용 하 여와 iCloud 키 집합에만 인증으로 제한 되었습니다.However, it was limited to unlocking the device, using the App Store, using iTunes and authenticating the iCloud keychain only.

이제 두 가지 로컬 인증 API를 사용 하 여 iOS 8 응용 프로그램의 인증 메커니즘으로 Touch ID를 사용 합니다.There are now two ways to use Touch ID as an authentication mechanism in an iOS 8 application using the Local Authentication API. 불가능 현재 로컬 인증 원격으로 인증을 사용 합니다.It is currently not possible to use Local Authentication to authenticate remotely.

Touch ID 및 해당 분량을 완벽 하 게 이해 하려면 살펴볼 Keychain 서비스 및 명령을 사용자의 데이터에 대 한 이러한 새로운 변경 내용을 의미 합니다.To fully understand Touch ID and its worth, we should explore Keychain Services and what these new changes mean for your user's data. Keychain Access도 새로운 액세스 제어 목록 (Acl) 기능을 사용 하 여 ios 8 시 확장 되었습니다.Keychain Access has also been expanded upon in iOS 8 through the use of the new Access Control Lists (ACLs) feature.

키 집합 및 보안 EnclaveKeychain & Secure Enclave

키 집합은 하나의 개별 Apple id 암호, 키, 인증서 및 정보에 대 한 보안 저장소를 제공 하는 대규모 데이터베이스Keychain is a large database providing secure storage for passwords, keys, certificates and notes for one individual Apple ID. IOS 8에서에서 응용 프로그램은 항상 자체 고유 키 집합 항목에 대 한 액세스 권한이 하 고 다른 응용 프로그램의 모든 키 집합 항목에 액세스할 수 없습니다.In iOS 8 an application always has access to its own unique keychain items, and cannot access any keychain items of other applications. 이 Osx 키 집합은 단일 암호를 잠금 해제 되어 있으므로 키 집합을 사용 하 여 키 집합 서비스 인식 응용 프로그램에서에서 서로 다릅니다.This differs from OS X where the keychain is unlocked with a single password, letting any Keychain Services-aware application use the keychain. 이 문서의 keychain iOS 8에서에서 작동 하는 방법을 집중 됩니다.In this article we will focus on how the keychain works in iOS 8.

키 집합은 각 행 이라고 하는 특수 한 데이터베이스를 _Keychain 항목_합니다.Keychain is a specialized database, where each row is known as a Keychain Item. 각 항목은 keychain 특성에 의해 설명 되며 암호화 된 값으로 구성 합니다.Each item is described by keychain attributes and is composed of encrypted values. 작은 항목에 대 한 최적화 되어 효율적으로 사용할 키 집합 있도록 또는 _비밀_합니다.To allow for efficient use of keychain, it is optimized for small items, or secrets. 각 키 집합이 사용자 암호 및 고유 장치 비밀 보호 됩니다.Each keychain item is protected by the users passcode and a unique device secret. 사용자가 자신의 장치를 사용 하지 않는 경우에 키 집합 항목을 보호 되어야 합니다.Keychain items should be protected even when users are not using their devices. 장치가 잠긴 경우 사용할 수 있으려면 항목에만 허용 하 여 iOS에서 구현 되었습니다-사용할 수 없게 되는 장치가 잠겨 있을 경우.This is implemented in iOS by only allowing the items to become available when the device is unlocked — when the device is locked they become unavailable. 암호화 된 백업에 저장 될 수 있습니다.They can also be stored in an encrypted backup. 액세스 제어를 적용 하는 키 집합의 주요 기능 중 하나 응용 프로그램의 키 집합의 해당 부분에 액세스할 수 있고 다른 모든 응용 프로그램을 주고받을 수 없게 됩니다.One of the key features of keychain is to enforce access control; an application has access to its portion of the keychain, and all other applications will be prevented. 아래 다이어그램에서는 응용 프로그램 키 집합 상호 작용 하는 방법을 보여 줍니다.The diagram below illustrates how an application interacts with the keychain:

보안 EnclaveSecure Enclave

키 집합 자체에서 키 집합 항목을 해독할 수 없습니다. 수행 하는 대신 합니다 보안 Enclave합니다.The Keychain can’t decrypt the keychain item by itself; instead it is done in the Secure Enclave. 보안 enclave는 등록 된 인쇄에 대해 Touch ID 센서에서 지문 데이터에서 일치 하는 항목을 결정 하는 일을 담당 하는 A7 칩 내에서 공동 프로세서.The Secure enclave is a co-processor within the A7 chip that is responsible for determining a successful match from fingerprint data from the Touch ID sensor against a registered print. 그런 다음 키 집합 항목의 암호를 해독 하 고 키 집합 암호 해독 된 암호를 반환 합니다.It will then decrypt the keychain item, and return the decrypted secret to the keychain.

키 집합 사용Working with Keychain

먼저 응용 프로그램 암호가 있는지 확인 하려면 키 집합에 쿼리해야 합니다.First your application should query into the Keychain to see if a password exists. 존재 하지 않는 경우 메시지를 표시 하려면 암호를 묻는 계속 되지 않습니다.If it doesn’t exist, you may need to prompt for a password so the user isn’t continually asked. 암호를 업데이트 해야 하는 경우 새 암호를 묻는 메시지를 표시 하 고 키 집합에 업데이트 된 값을 전달 합니다.If the password needs to be updated, prompt the user for a new password and pass in the updated value to the keychain.

참고

암호를 사용 하 여 키 집합에서 검색 된 후 메모리에서 데이터에 대 한 모든 참조를 제거 해야 합니다.After using a secret retrieved from the Keychain, all references to the data should be purged from memory. 전역 변수를 할당 하지 않습니다.Never assign it to a global variable.

키 집합 ACL 및 터치 IDKeychain ACL and Touch ID

액세스 제어 목록에는 특정 작업이 발생 되도록 허용 하려면 어떻게 해야 하는 것에 대 한 정보를 설명 하는 iOS 8에서에서 새 키 집합 항목 특성입니다.Access Control List is a new keychain item attribute in iOS 8 that describes the information regarding what must happen to permit a particular operation to occur. 이 형식의 경고 대화 상자를 표시 하거나 암호를 요청할 수 있습니다.This could be in the form of displaying an alert dialog or requesting a passcode. ACL을 사용 하면 접근성 및 항목 키 집합에 대 한 인증을 설정할 수 있습니다.ACL allows you to set the accessibility and authentication for a keychain Item. 아래 다이어그램에서는 키 집합 항목의 나머지 부분을 사용 하 여이 새 특성을 연결 하는 방법을 보여 줍니다.The diagram below shows how this new attribute ties in with the rest of the keychain item:

IOS 8 기준으로 이제 새 사용자 현재 상태 정책이 되어, SecAccessControl는 iPhone 5 초 이상 보안 enclave에 의해 적용 됩니다.As of iOS 8, there is now a new user presence policy, SecAccessControl, which is enforced by the secure enclave on an iPhone 5s and above. 방금 어떻게 장치 구성을 영향을 줄 수 정책 평가 아래 표에서 볼 수 있습니다.We can see in the table below, just how the device configuration can influence the policy evaluation:

장치 구성Device Configuration 정책 평가Policy Evaluation 백업 메커니즘Backup Mechanism
암호 없이 장치Device without Passcode 액세스 권한 없음No Access 없음None
암호를 사용 하 여 장치Device with Passcode 암호 필요Requires Passcode 없음None
Touch ID 사용 하 여 장치Device with Touch ID Touch ID를 선호합니다.Prefers Touch ID 암호를 허용합니다.Allows Passcode

보안 Enclave 내 모든 작업에 서로 신뢰할 수 있습니다.All operations inside the Secure Enclave can trust each other. 즉, Touch ID 인증 결과 키 집합 항목 암호 해독 권한을 부여 하 사용할 수 있습니다.This means we can use the Touch ID authentication result to authorize the Keychain item decryption. 또한 보안 Enclave 실패 한 Touch ID 일치 하는 경우 사용자는 암호를 사용 하 여 되돌려야 하는 카운터를 유지 합니다.The Secure Enclave also keeps a counter of failed Touch ID matches, in which case a user will have to revert to using the passcode. 호출 iOS 8의에서 새로운 프레임 Local Authentication, 인증 된 장치 내에서이 프로세스를 지원 합니다.A new framework in iOS 8, called Local Authentication, supports this process of authentication within the device. 다음 섹션에서 살펴보겠습니다.We will explore this in the next section.

로컬 인증Local Authentication

이전 섹션에서 설정 했습니다 응용 프로그램 로컬 인증 장치에서 설정 된 보안 정책 사용 하 여 준수에서 사용자를 인증에 사용할 수 있습니다.As we established in the previous section, applications can use Local Authentication to authenticate the user in adherence with the security policy that has been set up on the device.

현재 API 두 기능을 제공 합니다. 첫째, 새 키 집합 액세스 제어 목록 (Acl)를 사용 하 여 기존 키 집합 서비스를 지원 합니다.Currently, the API provides only two capabilities: Firstly, it aids the existing Keychain services through the use of new Keychain Access Control Lists (ACLs). 키 집합 데이터는 사용자가 지문을 성공적인 인증을 사용 하 여 잠금 수 있습니다.Keychain data can be unlocked with the successful authentication of a users fingerprint.

둘째, LocalAuthentication 로컬로 응용 프로그램을 인증 하는 두 가지 방법 제공 합니다.Secondly, LocalAuthentication provides two methods to authenticate your application locally. 개발자 사용할지 CanEvaluatePolicy Touch ID를 받아들일 수 있는 장치 인지 확인 하 고 EvaluatePolicy 인증 작업을 시작 합니다.Developers should use CanEvaluatePolicy to determine if the device is capable of accepting Touch ID, and then EvaluatePolicy to start the authentication operation.

로컬 인증을 제공 하는 두 기능을 하는 동안 원격 서버에 인증 하는 응용 프로그램 또는 사용자에 대 한 메커니즘을 제공 하지 않습니다.While both capabilities offer local authentication, they do not provide a mechanism for the application or the user to authenticate to a remote server. Local Authentication 인증을 위해 새 표준 사용자 인터페이스를 제공합니다.Local Authentication provides a new standard user interface for authentication. Touch ID의 경우이 아래 그림과 같이 두 개의 단추를 사용 하 여 경고 뷰입니다.In the case of Touch ID, this is an alert view with two buttons as illustrated below. [취소]를 인증 – 암호의 대체 방법을 사용 하 여 하나 이상의 단추입니다.One button to cancel, and one to use the fallback means of authentication – the passcode. 설정 해야 하는 사용자 지정 메시지를 이기도 합니다.There is also a custom message that must be set. Touch ID 인증이 필요한 사용자에 게 설명 하는 데 사용 하는 것이 좋습니다.It is good practice to use this to explain to the user why Touch ID authentication is required.

키 집합 서비스를 사용 하 여With Keychain Services

키 집합 항목을가 하는 방법에 약간 앞서 살펴본이 암호를 확인 하려면 보안 enclave를 사용 하 여 해독 합니다.We looked a little earlier at how a keychain item is decrypted, using the secure enclave to verify our passcode. IOS 8, 로컬 인증 대체 (fallback) 메커니즘을 또는 암호의 구현을 제공 하는 액세스 제어 목록 기능을 함께 Touch ID 검증을 요청에 사용할 수 있습니다.In iOS 8, we can use Local Authentication to request Touch ID verification in conjunction with the Access Control Lists feature, which provides the implementation of the fallback mechanism, or the password. 에서는 사용 해야 하는 ACL을 사용 하 여 SecAccessControl 정책 및 사용 하 여 장치 상태를 확인 한 다음 SecAccessible.WhenPasscodeSetThisDeviceOnly 또는 SecAccessible.WhenUnlocked합니다.To use ACL we should be using the SecAccessControl policy, and then checking the state of the device using SecAccessible.WhenPasscodeSetThisDeviceOnly or SecAccessible.WhenUnlocked.

ACL 사용 시 고려 사항Considerations with ACL

여러 가지 방법으로 키 집합을 사용 하 여 ACL을 사용 하는 경우 염두 해야 했습니다 하 고 그 중 일부는 다음과 같습니다.There are many things we should keep in mind when using ACL with the keychain and some of these are listed below:

  • 만 사용 하 여 포그라운드 응용 프로그램을 사용 하 여 키 집합 작업 호출이 실패 하는 백그라운드 스레드에서 호출 하는 경우.Only use with Foreground Application – if you call any keychain operation on a background thread the call will fail.
  • 추가 하 고 키 집합 항목을 업데이트 하는 인증이 필요할 수 있습니다.Adding and updating keychain items may require authentication.
  • 키 집합에 여러 일치 하는 항목을 반환 하는 요청을 인증 해야 합니다.If a request returns multiple matching items in the keychain, authentication may be required.
  • 보호 된 항목 ACL 장치 전용 및 따라서 동기화 않거나 백업 됩니다.ACL protected items are device-only, and therefore not synchronized or backed up.

키 집합 서비스 없이 로컬 인증을 사용 하 여Using Local Authentication without Keychain Services

로컬 인증 암호 또는 터치 ID에 같은 자격 증명을 수집 하 고 사용자 인증을 완료 하려면 보안 Enclave를 사용 하는 방법으로 만들었습니다.Local Authentication was created as a way to collect credentials, such as passcode or Touch ID, and to work with the Secure Enclave to finish authenticating the user. 응용 프로그램 및 서로 직접 통신할 수 있는 보안 Enclave 사이의 연결 고리로 생각 합니다.Think of it as a bridge between your application and the Secure Enclave, which can never directly communicate with each other. 응용 프로그램에 대 한 정책 평가 위한 데도 수 있습니다.It can also be used for policy evaluation for your application.

이 응용 프로그램을 위해 보안 Enclave 내에서 작업을 시작 하는 로컬 인증 내에서 정책 평가 호출 합니다.To do this an application calls the policy evaluation inside Local Authentication, which starts the operation inside Secure Enclave. 직접 쿼리/에 액세스 하지 않고 보안 Enclave를 앱에 인증을 제공 하기 위해 활용할 수 있습니다.You can leverage this to provide authentication to your app, without directly querying/accessing the Secure Enclave.

예를 들어 개인에 대 한 도움이 자녀 또는 은행 응용 프로그램 같은 장치 소유자의 눈에만 기능을 잠금 해제 하려면 사용자가 확인을 구현 하는 간단한 방법을 제공 응용 프로그램에서 로컬 인증 사용 응용 프로그램입니다.Using Local Authentication in your application provides a simple way of implementing user verification, for example to unlock a feature solely for the eyes of the device owner, such as banking applications, or to aide parental controls for the individual application. 이미 존재 하는 인증을 확장 하는 방법으로도 사용할 수 있습니다 – 사용자가 해당 정보를 안전한 비슷하지만 옵션이 하려는 인.You can also use it as a way to extend authentication that already exists – users like their information to be secure, but they also like to have options.

로컬 인증의 보안 키 집합의 다릅니다.The security of local authentication differs from that of the keychain. 예를 들어, 키 집합을 사용 하는 경우 운영 체제와 보안 Enclave 간에 트러스트가 됩니다.For example, when using the keychain, the trust is between the operating system and the Secure Enclave. 로컬 인증을 사용 하 여 응용 프로그램과 운영 체제 보안 Enclave를 하지 보안 Enclave 자체의 결과에 대 한 액세스 권한만 있는지 즉 것입니다.With local authentication, it is between the application and the operating system, which means that you only have access to the results of the Secure Enclave, not the Secure Enclave itself.

보안 주제에 대 것도 매우 중요 한지 알고 액세스할 수 없는 등록된 손가락 또는 지문 이미지입니다.On the subject of security, it is also extremely important to know that there is no access to registered fingers, or fingerprint images. 보안 Enclave이 정보의 소유자 이며 따라서 없는 다른 시스템 구성 요소에 액세스할 수 합니다.The Secure Enclave is the owner of this information, and so no other system component has access to it.

로컬 인증 API를 활용 하 여 키 집합 없이 Touch ID를 사용 하려면 사용할 수 있는 몇 가지 함수가 있습니다.To use Touch ID without keychain by leveraging the Local Authentication API, there are a few functions that we can use. 이러한 아래에서 자세히 설명 합니다.These are detailed below:

  • CanEvaluatePolicy –이 확인 하는 장치를 터치 ID를 받아들일 수 있는 경우CanEvaluatePolicy – This will simply check to see if the device is capable of accepting Touch ID.
  • EvaluatePolicy 인증 작업을 시작 – 및 UI를 표시 하 고 반환 된 true 또는 false 응답 합니다.EvaluatePolicy – This starts the authentication operation and displays the UI, and returns a true or false answer.
  • DeviceOwnerAuthenticationWithBiometrics – Touch ID 화면 표시를 사용할 수 있는 정책입니다.DeviceOwnerAuthenticationWithBiometrics – This is the policy that can be used to show the Touch ID screen. 암호 대체 메커니즘이 여기에 대신 Touch ID 인증을 건너뛸 수 있도록 응용 프로그램에서이 대체 (fallback이)를 구현 해야 주목할 가치가 있습니다.It is worth noting that there is no passcode fallback mechanism here, instead you should implement this fallback in your application to allow users to skip the Touch ID authentication.

아래 나열 되어 있는 로컬 인증을 사용 하 여 몇 가지 주의 사항이 있습니다.There are a few caveats with using Local Authentication, which are listed below:

  • Keychain에 마찬가지로 실행할 수 있습니다 포그라운드에서 합니다.As with Keychain, it can only be run in the foreground. 백그라운드 스레드에서 호출 하면 실패 합니다.Calling it on a background thread will cause it to fail.
  • 정책 평가 실패할 수 있는 점을 염두에 두십시오.Keep in mind that the policy evaluation may fail. 암호 단추를 대신 구현 해야 합니다.A passcode button will need to be implemented as a fall back.
  • 제공 해야 합니다는 localizedReason 인증이 필요한 이유를 설명 합니다.You must supply a localizedReason to explain why Authentication is needed. 이렇게 하면 사용자와 신뢰를 구축 합니다.This helps to build trust with the user.

다음으로, 아래 섹션에서 살펴보겠습니다 다음이 사항을 고려 하는 API를 구현 하는 방법입니다.Next, in the section below, we will look at how to implement the API taking these caveats into consideration.

응용 프로그램에 Touch ID 추가Adding Touch ID to your application

이전 섹션에서 액세스 및 인증 키 집합 및 로컬 인증을 사용 하 여 이론에 살펴보았습니다.In the previous sections, we looked at the theory behind access and authentication using Keychain and Local Authentication. 이제 살펴보겠습니다를 어떻게 응용 프로그램에서 Touch ID를 통합할 수 있습니다.We will now take a look at how you can integrate Touch ID in to your application.

연습Walkthrough

응용 프로그램에 일부 Touch ID 인증을 추가 살펴보도록 하겠습니다.So let’s look at adding some Touch ID Authentication to our application. 이 연습에서는 업데이트 하려고 합니다 스토리 보드 테이블 샘플에서는 다음과 같이 작동 하도록 로컬 인증 추가 합니다 스토리 보드 테이블 – 로컬 인증 만 허용 하는 샘플 작업 목록에 추가할 사용자를 인증 합니다.In this walkthrough we are going to update the Storyboard Table sample, adding local authentication so that it works like the Storyboard Table – Local Authentication sample, which only allows authenticated users to add chores to the list.

  1. 샘플을 다운로드 하 고 mac 용 Visual Studio에서 실행Download the sample and run it in Visual Studio for Mac.

  2. 두 번 클릭 MainStoryboard.Storyboard 를 iOS 디자이너에서에서 샘플을 엽니다.Double Click on MainStoryboard.Storyboard to open the sample in the iOS Designer. 이 샘플을 사용 하 여 인증을 제어 하는 응용 프로그램을 새 화면을 추가 하려고 합니다.With this sample, we want to add a new screen to our application, which will control the authentication. 현재 이동이 MasterViewController합니다.This will go before the current MasterViewController.

  3. 새 끌어 뷰 컨트롤러 에서 도구 상자디자인 화면합니다.Drag a new View Controller from the Toolbox to the Design Surface. 로 설정 합니다 루트 뷰 컨트롤러 하 여 Ctrl + 드래그 에서 합니다 탐색 컨트롤러:Set this as the Root View Controller by Ctrl + Drag from the Navigation Controller:

  4. 새 뷰 컨트롤러 이름을 AuthenticationViewController입니다.Name the new View Controller AuthenticationViewController.

  5. 다음으로 단추를 끌어서에 배치 된 AuthenticationViewController합니다.Next, drag a button and place it on the AuthenticationViewController. 이 메서드를 호출 AuthenticateButton에 텍스트를 제공 하 고 Add a Chore입니다.Call this AuthenticateButton, and give it the text Add a Chore.

  6. 이벤트를 만들 합니다 AuthenticateButton 호출 AuthenticateMe합니다.Create an event on the AuthenticateButton called AuthenticateMe.

  7. 수동 만들기에서 segue AuthenticationViewController 아래쪽에 있는 검은색 표시줄을 클릭 하 여 및 Ctrl + 드래그 표시줄에서 합니다 MasterViewController 선택 하 고 푸시 (또는 표시 size 클래스 사용):Create a manual segue from AuthenticationViewController by clicking the black bar at the bottom and Ctrl + Drag from the bar to the MasterViewController and choosing push (or show if using size classes):

  8. 클릭 새로 만든 segue 및 식별자를 제공 AuthenticationSegue아래 그림과 같이:Click on the newly created segue and give it the identifier AuthenticationSegue, as illustrated below:

  9. 다음 코드를 AuthenticationViewController에 추가합니다.Add the following code to AuthenticationViewController:

    partial void AuthenticateMe (UIButton sender)
    {
        var context = new LAContext();
        NSError AuthError;
        var myReason = new NSString("To add a new chore");
    
        if (context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out AuthError)){
            var replyHandler = new LAContextReplyHandler((success, error) => {
                this.InvokeOnMainThread(()=> {
                    if(success)
                    {
                        Console.WriteLine("You logged in!");
                        PerformSegue("AuthenticationSegue", this);
                    }
                    else
                    {
                        // Show fallback mechanism here
                    }
                });
            });
            context.EvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, myReason, replyHandler);
        };
    }
    

로컬 인증을 사용 하 여 Touch ID 인증을 구현 해야 하는 모든 코드입니다.This is all the code you need to implement Touch ID authentication using Local Authentication. 아래 이미지에서 강조 표시 된 줄은 로컬 인증 사용을 보여 줍니다.The highlighted lines in the image below show the use of Local Authentication:

먼저, 장치가 Touch ID를 사용 하 여 입력을 받아들일 수 있는 경우 설정 해야 합니다 CanEvaluatePolicy 정책에 전달 하 고 DeviceOwnerAuthenticationWithBiometrics입니다.First, we need to establish if the device is capable of accepting Touch ID input, by using the CanEvaluatePolicy and passing in the policy DeviceOwnerAuthenticationWithBiometrics. 이 true 이면 Touch ID UI를 사용 하 여 표시할 수 있습니다 EvaluatePolicy합니다.If this is true then we can display the Touch ID UI by using EvaluatePolicy. 세 가지 정보를 전달 해야 하며 가지 EvaluatePolicy – 자체 정책, 인증이 필요한 이유를 설명 하는 문자열 및 회신 처리기입니다.There are three pieces of information we have to pass into EvaluatePolicy – the policy itself, a string explaining why authentication is necessary, and a reply handler. 응답 처리기 수행할 성공 또는 실패 하면 인증의 경우 응용 프로그램에 알려줍니다.The reply handler tells the application what it should do in the case of a successful, or unsuccessful, authentication. 응답 처리기를 자세히 살펴보겠습니다.Let’s look closer at the reply handler:

응답 처리기 형식 지정 LAContextReplyHandler, 매개 변수 성공-를 사용 하는 bool 값 및 NSError 호출 error합니다.The reply handler is specified of type LAContextReplyHandler, which takes the parameters success – a bool value, and an NSError called error. 성공한 경우 이것이 있는 것을 실제로 수행 무엇이 든 해당 인증 – 하고자이 경우 새 작업을 추가 해는 화면을 표시 합니다.If it is successful, this is where we will actually perform whatever it is we want to authenticate – in this case displaying the screen that will let us add a new chore. 전경에서 실행 되 고 사용 해야 해야 하는 로컬 인증의 제한 사항 중 InvokeOnMainThread:Remember one of the caveats of Local Authentication is that it must be run on the foreground, so make sure to use InvokeOnMainThread:

마지막으로 인증에 성공 했을 때 원하는 전환의 MasterViewController합니다.Finally, when the authentication has been successful, we want to transition to the MasterViewController. PerformSegue 이렇게 하려면 메서드를 사용할 수 있습니다.The PerformSegue method can be used to do this:

요약Summary

이 가이드의 키 집합 및 iOS에서 작동 하는 방법을 살펴보았습니다.In this guide we looked at Keychain and how this works in iOS. ACL에 키 집합에도 살펴보았습니다 및 iOS에서이를 변경 합니다.We also explored the keychain ACL, and changes to this in iOS. 다음으로, iOS 8의에서 새로운 응용 프로그램에서 Touch ID 인증을 구현할 살펴보고 있으며 로컬 인증 프레임 워크에서 확인을 했습니다.Next, we took a look at the Local Authentication framework, which is new in iOS 8 and then looked at implementing Touch ID authentication in our application.