iOS 8 Intégration de Touch ID

En septembre 2013, Apple a dévoilé le dernier iPhone doté de nombreuses améliorations matérielles. La fonctionnalité la plus innovante de l’iPhone 5s était une fine bande métallique entourant le bouton principal, un capteur d’empreintes digitales appelé Touch ID. Les développeurs ont appris à connaître l'API. Un an plus tard, iOS 8 introduit un nouveau cadre permettant aux développeurs d’utiliser le capteur d’empreintes digitales..

le Authentification locale framework fournit des méthodes pour inviter un utilisateur à s’authentifier. Vous pouvez utiliser ceci comme identifiant pour votre application ou simplement pour protéger des données sensibles au sein d'une application. Dans ce tutoriel, je vais expliquer les options disponibles, les données que vous pouvez obtenir à partir du périphérique, et nous allons également créer un exemple d'application..

Ce tutoriel nécessite Xcode 6 pour créer le projet et vous aurez besoin d'un appareil avec Touch ID pour tester l'exemple d'application que nous allons créer..

1. Touch ID

Touch ID (ID tactile) fait référence au capteur d'empreinte digitale intégré au bouton d'accueil de l'iPhone 5s. Il a été ajouté pour encourager l'utilisation des codes d'authentification en facilitant l'authentification des utilisateurs. Vous pouvez configurer chaque appareil avec un maximum de cinq empreintes digitales. Jusqu'à présent, il était utilisé pour déverrouiller l'appareil et effectuer des achats sur iTunes Store, App Store et iBooks Store. Avant de voir comment vous pourriez l'utiliser dans vos applications, voici un aperçu rapide du capteur lui-même..

Le capteur Touch ID est capable de numériser vos doigts à une résolution de 500 pixels par pouce, ce qui lui permet de classer chaque impression dans l’une des trois catégories suivantes: arc, tour, tour ou boucle. Le capteur est conçu pour être vraiment pratique, vous pouvez scanner votre doigt dans n'importe quelle orientation et déterminer la correspondance avec toute empreinte digitale existante, quelle que soit l'orientation d'origine..

Apple affirme que la probabilité d'un faux positif pour une empreinte digitale donnée est de 1 sur 50 000, ce qui est bien meilleure que la probabilité de deviner un code PIN à 4 chiffres à 1 sur 10 000. Ils ne mentionnent pas qu'il est possible d'utiliser le numéro d'identification personnelle lorsque vous n'êtes pas en mesure d'utiliser vos empreintes digitales, par exemple lorsque vous êtes tout ridée après avoir nagé..

Si vous envisagez d'utiliser Touch ID, vous devez également envisager des scénarios dans lesquels les utilisateurs ne peuvent pas utiliser leur doigt pour s'authentifier. Étant donné que vous ne pouvez pas vérifier le code PIN du périphérique comme le fait Apple, il peut être judicieux de demander aux utilisateurs de créer un mot de passe dans votre application..

2. Considérations de sécurité

La principale préoccupation du capteur d'empreinte digitale est que la vie privée des utilisateurs est fondamentalement violée. Si votre mot de passe est révélé, vous pouvez le modifier et une personne malveillante ne pourrait plus l'utiliser pour accéder à vos données. Si votre empreinte digitale, ou la représentation mathématique de celle-ci par Apple, est exposée, vous ne pourrez pas la changer aussi facilement..

le Authentification locale Le cadre gère tout le travail de vérification des utilisateurs. Lorsque vous utilisez Touch ID, il est important de savoir qu'il ne révèle aucun détail sur l'utilisateur et qu'aucune donnée n'est transférée à partir de l'appareil. Cependant, les développeurs peuvent utiliser la structure pour vérifier si un utilisateur est autorisé à utiliser l'application..

Si vous connaissez la spécification OAuth, vous constaterez peut-être des similitudes dans la manière dont l’authentification est gérée. Vous demandez à un tiers de vérifier l’identité d’un utilisateur. Si vous faites confiance à ce tiers, vous pouvez utiliser sa réponse au lieu de demander informations d'identification directement de l'utilisateur.

3. LAContext

Le cœur du cadre d’authentification locale est le LAContext classe. Les développeurs peuvent utiliser une instance de LAContext évaluer une politique de sécurité. Au moment d'écrire ces lignes, il n'y a qu'une seule politique. Il vérifie, à l'aide du capteur Touch ID, que la personne qui s'authentifie est le propriétaire de l'appareil. Il pourrait y avoir d'autres stratégies de sécurité à l'avenir. Par exemple, Apple peut introduire un rôle non privilégié pouvant uniquement accéder à certaines ressources..

Si la structure ne parvient pas à s'authentifier, une erreur est générée. Un périphérique ne peut pas s'authentifier pour plusieurs raisons.

  • LAErrorTouchIDNotAvailable L'appareil n'a pas de capteur d'empreinte digitale.
  • LAErrorPasscodeNotSet Aucun mot de passe n'est défini sur le périphérique, ce qui signifie que le Touch ID est désactivé..
  • LAErrorTouchIDNotEnrolled Un code d'authentification est défini mais le périphérique n'a été configuré avec aucune empreinte digitale..

Si une erreur est générée avec l'un des codes d'erreur ci-dessus, vous devez indiquer une autre méthode permettant aux utilisateurs de s'authentifier. À ce stade, vous ne pouvez pas compter uniquement sur Touch ID..

Créons un exemple d'application pour savoir comment utiliser le cadre d'authentification locale..

4. Configuration du projet

Étape 1

Ouvrez Xcode et sélectionnez Nouveau> Projet… du Fichier menu. Choisir Application à vue unique de la liste des Application iOS modèles et cliquez Suivant.

Étape 2

Entrez un nom pour votre projet, j'ai appelé le mien Auth. Entrez le nom de votre organisation, l'identifiant de l'entreprise et le préfixe de la classe. Choisir iPhone du Dispositifs liste, cliquez Suivant, et choisissez un emplacement pour enregistrer le projet.

Étape 3

Cliquez sur ViewController.h et définir une nouvelle action, authenticateButtonTapped, qui déclenchera le processus d'authentification. L'interface du ViewController la classe devrait ressembler à ceci:

#importation  @interface ViewController: UIViewController - (IBAction) authenticateButtonTapped: (id) expéditeur; @fin

Étape 4

Ouvrir Tableau principal et faites glisser un Bouton sur la vue du contrôleur de vue. Changer l'étiquette du bouton pour lire Authentifier.

Étape 5

Faites un clic droit sur le bouton pour afficher le Inspecteur de connexions. Cliquez sur le plus à gauche de la Retouche à l'intérieur événement et sélectionnez le contrôleur de vue contenant le bouton. Un autre menu apparaît dans lequel vous pouvez sélectionner l'action que nous avons déclarée il y a un instant..

5. Authentifier un utilisateur

Étape 1

Basculer vers ViewController.m mettre en œuvre le authenticateButtonTapped méthode. En haut du fichier, ajoutez l'instruction d'importation suivante pour la structure d'authentification locale..

 #importation 

Étape 2

dans le authenticateButtonTapped méthode, nous créons un contexte et déterminons si le contexte peut évaluer la LAPolicyDeviceOwnerAuthenticationWithBiometrics politique, sinon afficher un message d'erreur.

- (IBAction) authenticateButtonTapped: expéditeur (id) LAContext * context = [[LAContext alloc] init]; NSError * error = nil; if ([context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics erreur: & erreur]) // Authentifier l'utilisateur else UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "erreur" message: @ "Votre périphérique ne peut pas s'authentifier à l'aide de TouchID." délégué: nil cancelButtonTitle: @ "Ok" otherButtonTitles: nil]; [émission d'alerte]; 

Étape 3

Si la LAContext L'objet est capable de s'authentifier à l'aide de Touch ID, puis nous essayons de vérifier l'identité de l'utilisateur. Si aucune erreur n'est générée, nous disons à l'utilisateur s'il est le propriétaire de l'appareil. La mise en œuvre finale de la authenticateButtonTapped la méthode est indiquée ci-dessous.

- (void) authenicateButtonTapped: expéditeur (id) LAContext * context = [[LAContext alloc] init]; NSError * error = nil; if ([context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error: & error]) ) [context evaluPolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason: @ "Êtes-vous le propriétaire du périphérique?" réponse: ^ (succès BOOL, erreur NSError *) if (erreur) UIAlertView * alert = [[UIAlertView alloc]] initWithTitle: @ "erreur" message: @ "Un problème est survenu lors de la vérification de votre identité." délégué: nil cancelButtonTitle: @ "Ok" otherButtonTitles: nil]; [émission d'alerte]; revenir;  if (success) UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "message" Success: @ "Vous êtes le propriétaire de l'appareil!" délégué: nil cancelButtonTitle: @ "Ok" otherButtonTitles: nil]; [émission d'alerte];  else UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Erreur" message: @ "Vous n'êtes pas le propriétaire de l'appareil." délégué: nil cancelButtonTitle: @ "Ok" otherButtonTitles: nil]; [émission d'alerte]; ];  else UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "message d'erreur": @ "Votre périphérique ne peut pas s'authentifier à l'aide de TouchID." délégué: nil cancelButtonTitle: @ "Ok" otherButtonTitles: nil]; [émission d'alerte]; 

6. Construire et exécuter

Générez et exécutez l'application sur un périphérique physique doté d'un capteur d'empreinte digitale, puis appuyez sur le bouton pour vous authentifier. Tant que votre appareil prend en charge le Touch ID, vous devez être invité à vous authentifier. Si vous mettez le doigt sur le capteur, l'application devrait vous dire si vous êtes le propriétaire de l'appareil ou non..

Conclusion

Dans ce didacticiel, nous avons examiné le cadre d’authentification locale introduit dans iOS 8. En vérifiant l’identité de l’utilisateur authentifiant, le LAContext classe permet aux utilisateurs de s'identifier sans fournir de données sensibles directement à l'application.