> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Décrit comment installer, utiliser et configurer les options du SDK iOS Guardian.swift.

# SDK iOS Guardian.swift

[Guardian.swift](https://github.com/auth0/Guardian.swift) vous permet d’intégrer le service multifactoriel Guardian d’Auth0 à votre propre application iOS, pour qu’elle serve elle-même de second facteur. Vos utilisateurs profiteront de tous les avantages de notre <Tooltip tip="Authentification multifactorielle (MFA) : processus d’authentification de l’utilisateur qui utilise un facteur en plus du nom d’utilisateur et mot de passe, comme un code par SMS." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=multi-factor+authentication">authentification multifactorielle</Tooltip> fluide directement dans votre application. Pour en savoir plus, consultez [Bien démarrer avec Apple Push Notification Service](/docs/fr-ca/secure/multi-factor-authentication/multi-factor-authentication-factors/configure-push-notifications-for-mfa#configure-push-notifications-for-apple-using-apn-).

<div id="requirements">
  ## Exigences
</div>

* iOS 10+ et Swift 4.1 sont requis pour utiliser Guardian.
* Pour utiliser ce SDK, vous devez configurer le service Guardian de votre tenant avec vos propres identifiants de notifications push, sinon vous ne recevrez aucune notification push. Pour en savoir plus, consultez [Configurer les notifications push pour la MFA](/docs/fr-ca/secure/multi-factor-authentication/multi-factor-authentication-factors/configure-push-notifications-for-mfa).

<div id="install-guardian-ios-sdk">
  ## Installer le SDK Guardian pour iOS
</div>

<div id="cocoapods">
  ### CocoaPods
</div>

Guardian.swift est disponible par l’entremise de [CocoaPods](http://cocoapods.org). Pour l’installer, ajoutez la ligne suivante à votre Podfile :

```bash lines theme={null}
pod 'Guardian', '~> 1.1.0'
```

<div id="carthage">
  ### Carthage
</div>

Ajoutez cette ligne à votre Cartfile :

```bash lines theme={null}
github "auth0/Guardian.swift" ~> 1.1.0
```

<div id="enable-guardian-push-notifications">
  ## Activer les notifications push de Guardian
</div>

1. Accédez à [Dashboard > Sécurité > Multi-factor Auth](https://manage.auth0.com/#/guardian).
2. Activez la bascule **Notification push**.
3. [Configurer les notifications push](/docs/fr-ca/secure/multi-factor-authentication/multi-factor-authentication-factors/configure-push-notifications-for-mfa#configure-push-notifications-for-apple-using-apn-).

<div id="usage">
  ## Utilisation
</div>

`Guardian` est au cœur du SDK. Pour utiliser le SDK, procédez à l’importation de la bibliothèque :

```swift lines theme={null}
import Guardian
```

Définissez le domaine de votre tenant. Ou utilisez le <Tooltip tip="Domaine personnalisé : domaine tiers avec un nom spécialisé ou de fantaisie." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=custom+domain">domaine personnalisé</Tooltip> si vous en avez configuré un pour votre tenant :

```swift lines theme={null}
let domain = "<tenant>.<region>.auth0.com"
```

<div id="enroll">
  ### Inscription
</div>

Une inscription établit un lien entre le deuxième facteur et un compte Auth0. Lorsqu’un compte est inscrit, vous devrez fournir le deuxième facteur requis pour vérifier l’identité. Si votre application n’utilise pas encore les notifications push ou que vous ne connaissez pas bien ce mécanisme, consultez [Apple Push Notification Service Overview](https://developer.apple.com/go/?id=push-notifications) pour en savoir plus.

Pour effectuer une inscription, vous avez besoin des renseignements suivants, en plus du domaine de votre tenant :

| Variable              | Description                                                                                                                                |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **URI d’inscription** | Valeur encodée dans le QR code numérisé à partir de Guardian Web Widget ou dans votre ticket d’inscription envoyé par courriel ou par SMS. |
| **Jeton APNS**        | Jeton APNS Apple de l’appareil. Il doit s’agir d’une chaîne contenant les 64 octets (en format hexadécimal).                               |
| **Paire de clés**     | Une paire de clés RSA (privée/publique) utilisée pour attester votre identité auprès d’Auth0 Guardian.                                     |

Une fois que vous avez ces renseignements, vous pouvez inscrire votre appareil :

```swift lines theme={null}
Guardian
        .enroll(forDomain: "{yourTenantDomain}",
                usingUri: "{enrollmentUri}",
                notificationToken: "{apnsToken}",
                signingKey: signingKey,
                verificationKey: verificationKey
                )
        .start { result in
            switch result {
            case .success(let enrolledDevice):
                // réussite, les données de l'appareil d'inscription sont disponibles
            case .failure(let cause):
                // quelque chose a échoué, vérifiez la cause pour savoir ce qui s'est mal passé
            }
        }
```

En cas de réussite, vous obtiendrez les renseignements d’inscription, qui doivent être stockés de manière sécurisée dans votre application. Ces renseignements comprennent l’identifiant d’inscription ainsi que le jeton de l’API Guardian associé à votre appareil pour mettre à jour ou supprimer votre inscription.

<div id="signing-and-verification-keys">
  #### Clés de signature et de vérification
</div>

Guardian.swift fournit une classe pratique pour générer une clé de signature :

```swift lines theme={null}
let signingKey = try DataRSAPrivateKey.new()
```

Cette clé n’existe qu’en mémoire, mais vous pouvez en obtenir la représentation `Data` et la stocker de façon sécuritaire, par exemple dans une SQLiteDB chiffrée :

```javascript lines theme={null}
// Stocker les données
let data = signingKey.data
// effectuer le stockage

// Charger depuis le stockage
let loadedKey = try DataRSAPrivateKey(data: data)
```

Mais si vous voulez simplement le stocker dans le trousseau iOS :

```swift wrap lines theme={null}
let signingKey = try KeychainRSAPrivateKey.new(with: "com.myapp.mytag")
```

L’exemple ci-dessus crée une clé et l’enregistre automatiquement sous le tag fourni. Si vous voulez la récupérer, vous pouvez utiliser ce tag :

```swift wrap lines theme={null}
let signingKey = try KeychainRSAPrivateKey(tag: "com.myapp.mytag")
```

Pour la clé de vérification, il suffit de l’obtenir à partir de n’importe quelle `SigningKey`, par exemple :

```swift lines theme={null}
let verificationKey = try signingKey.verificationKey()
```

<div id="allow-login-requests">
  ### Autoriser les requêtes de connexion
</div>

Une fois l’inscription effectuée, vous recevrez une notification push chaque fois que l’utilisateur devra valider son identité avec MFA. Guardian fournit une méthode pour analyser les données reçues d’APNs et renvoyer une instance `Notification` prête à l’emploi.

```swift lines theme={null}
if let notification = Guardian.notification(from: notificationPayload) {
    // nous avons reçu une notification push Guardian
}
```

Une fois que vous avez l’instance de notification, vous pouvez facilement autoriser la requête d’authentification à l’aide de la méthode `allow`. Vous aurez aussi besoin de certaines informations provenant de l’appareil inscrit que vous avez obtenues précédemment. Si vous avez plus d’une inscription, vous devrez trouver celle qui a le même `id` que la notification (la propriété `enrollmentId`).

Une fois que vous avez ces informations, le paramètre `device` peut être n’importe quel élément qui implémente le protocole `AuthenticatedDevice` :

```swift lines theme={null}
struct Authenticator: Guardian.AuthenticationDevice {
    let signingKey: SigningKey
    let localIdentifier: String
}
```

L’identifiant local est l’ID local de l’appareil; par défaut, lors de l’inscription, il s’agit de `UIDevice.current.identifierForVendor`. Ensuite, faites simplement la requête suivante :

```swift lines theme={null}
Guardian
        .authentication(forDomain: "{yourTenantDomain}", device: device)
        .allow(notification: notification)
        .start { result in
            switch result {
            case .success:
                // la demande d'auth a été autorisée avec succès
            case .failure(let cause):
                // une erreur s'est produite, vérifiez cause pour savoir ce qui s'est mal passé
            }
        }
```

<div id="reject-login-requests">
  ### Rejeter les requêtes de connexion
</div>

Pour rejeter une requête d’authentification, appelez plutôt `reject`. Vous pouvez aussi envoyer un motif de rejet facultatif. Le motif de rejet apparaîtra dans les journaux de Guardian.

```swift lines theme={null}
Guardian
        .authentication(forDomain: "{yourTenantDomain}", device: device)
        .reject(notification: notification)
        // ou reject(notification: notification, withReason: "hacked")
        .start { result in
            switch result {
            case .success:
                // la demande d'authentification a été rejetée avec succès
            case .failure(let cause):
                // une erreur s'est produite, vérifiez la cause pour savoir ce qui n'a pas fonctionné
            }
        }
```

<div id="unenroll">
  ### Désinscription
</div>

Si vous souhaitez supprimer une inscription, par exemple pour désactiver MFA, vous pouvez envoyer la requête suivante :

```swift lines theme={null}
Guardian
        .api(forDomain: "{yourTenantDomain}")
        .device(forEnrollmentId: "{userEnrollmentId}", token: "{enrollmentDeviceToken}")
        .delete()
        .start { result in
            switch result {
            case .success:
                // réussite, l'inscription a été supprimée
            case .failure(let cause):
                // quelque chose a échoué, vérifiez la cause pour savoir ce qui s'est mal passé
            }
        }
```

<div id="set-up-mobile-only-otp-enrollment">
  ### Configurer l’inscription OTP sur mobile uniquement
</div>

Vous pouvez activer les mots de passe à usage unique (OTP) comme facteur MFA à l’aide du <Tooltip tip="Auth0 Dashboard : le principal produit d’Auth0 pour configurer vos services." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> ou de la <Tooltip tip="Management API : un produit qui permet aux clients d’effectuer des tâches administratives." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Management+API">Management API</Tooltip>. Cette option ne nécessite pas de QR code et permet aux utilisateurs de s’inscrire manuellement.

Pour inviter un utilisateur à s’inscrire, accédez à [Auth0 Dashboard > User Management > Users](https://manage.auth0.com/#/users) et sélectionnez un utilisateur. Accédez ensuite à son onglet Details et utilisez la section Multi-Factor Authentication pour envoyer une invitation à l’inscription.

<div id="connect-a-resource">
  #### Connecter une ressource
</div>

Vous pouvez connecter une ressource à l’aide de l’Auth0 Dashboard ou du Guardian SDK.

<div id="use-auth0-dashboard">
  ##### Utiliser Auth0 Dashboard
</div>

1. Accédez à l’écran de connexion Auth0 et copiez le code fourni, ou une clé semblable encodée en base32 obtenue d’une autre source. À l’étape suivante, vous saisirez ce code dans une application d’authentification.

   <Frame>
     <img src="https://mintcdn.com/translations/eVsQcTnbClN-oB7d/docs/images/cdy7uua7fh8z/1yoqiIuERVTwCU8yfx6IM8/047513dfe1d40a22ce811b131d5ea289/OTP_Challenge_2_-_English.png?fit=max&auto=format&n=eVsQcTnbClN-oB7d&q=85&s=128a02f4c7f65e7a1d82640b1b9842f6" alt="Un exemple d’écran de connexion affichant un code à usage unique" width="492" height="679" data-path="docs/images/cdy7uua7fh8z/1yoqiIuERVTwCU8yfx6IM8/047513dfe1d40a22ce811b131d5ea289/OTP_Challenge_2_-_English.png" />
   </Frame>
2. Saisissez le code que vous avez copié dans une application d’authentification, comme Guardian.

<div id="use-the-sdk">
  ##### Utiliser le SDK
</div>

1. Importez la bibliothèque Guardian.

   ```swift lines theme={null}
   import Guardian
   ```

2. Créez un générateur de code.

   ```swift lines theme={null}
   let codeGenerator = try Guardian.totp(

      base32Secret: enrollmentCode,  // Code d’inscription saisi par l’utilisateur

      algorithm: .sha1			// Algorithme utilisé par TOTP

   )
   ```

3. Obtenez le code généré.

   ```swift lines theme={null}
   codeGenerator.code()
   ```

<div id="enter-one-time-code">
  #### Entrez le code à usage unique
</div>

Dans l’écran de connexion Auth0, entrez le code que vous avez généré à l’étape précédente.

<Frame>
  <img src="https://mintcdn.com/translations/eVsQcTnbClN-oB7d/docs/images/cdy7uua7fh8z/1yoqiIuERVTwCU8yfx6IM8/047513dfe1d40a22ce811b131d5ea289/OTP_Challenge_2_-_English.png?fit=max&auto=format&n=eVsQcTnbClN-oB7d&q=85&s=128a02f4c7f65e7a1d82640b1b9842f6" alt="Exemple d’écran de connexion affichant un code à usage unique" width="492" height="679" data-path="docs/images/cdy7uua7fh8z/1yoqiIuERVTwCU8yfx6IM8/047513dfe1d40a22ce811b131d5ea289/OTP_Challenge_2_-_English.png" />
</Frame>

Après avoir sélectionné Continuer, un message s’affiche pour indiquer que votre application a été ajoutée comme facteur d’authentification pour votre utilisateur.

<div id="log-in-with-your-app">
  #### Connectez-vous avec votre application
</div>

Une fois le facteur configuré, l’utilisateur peut se connecter à l’aide de votre application. Commencez par choisir l’application Guardian comme méthode d’authentification.

<Frame>
  <img src="https://mintcdn.com/translations/eVsQcTnbClN-oB7d/docs/images/cdy7uua7fh8z/1k7IsU9kfP5mrXU2jfGHuT/d61e0dcd09b633dbeb2cb54e1fd49018/2025-01-27_14-47-32.png?fit=max&auto=format&n=eVsQcTnbClN-oB7d&q=85&s=8688ecf3a0d42d92a6479adea541793d" alt="L’écran de sélection de la méthode d’authentification" width="396" height="775" data-path="docs/images/cdy7uua7fh8z/1k7IsU9kfP5mrXU2jfGHuT/d61e0dcd09b633dbeb2cb54e1fd49018/2025-01-27_14-47-32.png" />
</Frame>

Ensuite, entrez le code à usage unique dans l’écran de connexion pour vérifier votre identité.

<Frame>
  <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/S6uTieLjtuNUrQRMh8uch/21f1671d21ae9f61b63154ffaa21b5a2/OTP_Challenge_-_English.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=5db00906087d0b3d46e36cddc464d667" alt="L’écran Verify Your Identity invitant l’utilisateur à saisir un code à usage unique" width="494" height="669" data-path="docs/images/cdy7uua7fh8z/S6uTieLjtuNUrQRMh8uch/21f1671d21ae9f61b63154ffaa21b5a2/OTP_Challenge_-_English.png" />
</Frame>
