> ## 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 multifacteur Guardian d’Auth0 à votre propre application iOS, ce qui transforme celle-ci en second facteur. Vos utilisateurs profiteront de tous les avantages de notre <Tooltip tip="Authentification multifacteur (MFA) : processus d’authentification utilisant un facteur supplémentaire en plus du nom d’utilisateur et du mot de passe, comme un code envoyé par SMS." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=multi-factor+authentication">authentification multifacteur</Tooltip> sans friction directement dans votre application. Pour en savoir plus, consultez [Getting Started with Apple Push Notification Service](/fr-CA/docs/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 locataire avec vos propres identifiants de notifications push, sinon vous ne recevrez aucune notification push. Pour en savoir plus, consultez [Configurer les notifications push pour MFA](/fr-CA/docs/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 via [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 fichier 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 > Security > Multi-factor Auth](https://manage.auth0.com/#/guardian).
2. Activez **Push Notification**.
3. [Configurez les notifications push](/fr-CA/docs/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` constitue le cœur du SDK. Pour utiliser le SDK, importez la bibliothèque :

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

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

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

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

Une inscription établit un lien entre le deuxième facteur et un compte Auth0. Lorsqu’un compte est inscrit, vous devrez fournir ce deuxième facteur pour vérifier l’identité. Si votre application n’utilise pas encore les notifications push ou si 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 locataire :

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

Une fois ces renseignements en main, 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):
                // succès, les données de l'appareil inscrit sont disponibles
            case .failure(let cause):
                // échec, vérifiez la cause pour savoir ce qui s'est passé
            }
        }
```

En cas de succès, vous obtiendrez les informations d’inscription, qui doivent être stockées de manière sécurisée dans votre application. Ces informations comprennent l’identifiant d’inscription et le jeton de l’API Guardian associé à votre appareil, qui sert à 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 obtenir sa représentation `Data` et la stocker de manière sécurisée, 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 la balise fournie. Si vous voulez la récupérer, vous pouvez utiliser la balise :

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

Pour la clé de vérification, il suffit de la récupérer à partir de n’importe quel `SigningKey`, par exemple :

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

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

Une fois l’inscription configurée, vous recevrez une notification push chaque fois que l’utilisateur devra valider son identité avec la MFA. Guardian fournit une méthode pour analyser les données reçues d’APNs et retourner 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 approuver la demande d’authentification à l’aide de la méthode `allow`. Vous aurez aussi besoin de certaines informations sur 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 ces informations en main, 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 correspond à l’identifiant local de l’appareil; par défaut, lors de l’inscription, il s’agit de `UIDevice.current.identifierForVendor`. Appelez ensuite simplement :

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

<div id="reject-login-requests">
  ### Refuser des demandes de connexion
</div>

Pour refuser une demande 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 s'est passé
            }
        }
```

<div id="unenroll">
  ### Annuler l’inscription
</div>

Si vous souhaitez supprimer une inscription, par exemple pour désactiver la 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:
                // succès, l'inscription a été supprimée
            case .failure(let cause):
                // échec, vérifiez cause pour savoir ce qui s'est passé
            }
        }
```

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

Vous pouvez activer les mots de passe à usage unique (OTP) comme facteur MFA à l’aide de <Tooltip tip="Auth0 Dashboard : le principal produit Auth0 pour configurer vos services." cta="Voir le glossaire" href="/fr-CA/docs/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="/fr-CA/docs/glossary?term=Management+API">Management API</Tooltip>. Cette option ne nécessite pas de code QR 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. Ensuite, ouvrez l’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 en utilisant Auth0 Dashboard ou le SDK Guardian.

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

1. Accédez à l’invite de connexion Auth0 et copiez le code fourni ou une clé semblable codée en base32 obtenue d’une autre source. À l’étape suivante, saisissez 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="Exemple d’une invite 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. Ajoutez le code que vous avez copié à 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’invite de connexion Auth0, saisissez 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’invite 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 l’utilisateur.

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

Une fois l’inscription du facteur terminée, votre utilisateur peut se connecter à l’aide de votre application. Choisissez d’abord 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, saisissez le code à usage unique à l’invite 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 « Vérifiez votre identité » invitant l’utilisateur à saisir un code à usage unique" width="494" height="669" data-path="docs/images/cdy7uua7fh8z/S6uTieLjtuNUrQRMh8uch/21f1671d21ae9f61b63154ffaa21b5a2/OTP_Challenge_-_English.png" />
</Frame>
