---
title: Revalidation silencieuse
description: Utilise le moteur de Revalidation silencieuse, qui analyse le contexte comportemental de l'utilisateur au sein de l'effet de réseau d'Unico et fournit le signal de confiance pour la transaction en cours. Autrement dit, nous fournissons le niveau de confiance qu'il s'agit bien de l'utilisateur attendu dans la transaction.
canonical: https://developer.unico.io/fr/dual-api/developers/sdks-and-tools/ios/capture-flow/capture-types/silent-revalidation
locale: fr
generated_by: markdown-export
---

Utilise le moteur de Revalidation silencieuse, qui analyse le contexte comportemental de l'utilisateur au sein de l'effet de réseau d'Unico et fournit le signal de confiance pour la transaction en cours. Autrement dit, nous fournissons le niveau de confiance qu'il s'agit bien de l'utilisateur attendu dans la transaction.

:::info[Prérequis]
Version minimale : `3.3.0`
:::

## Attributs de PrepareInfo

| Attribut | Type | Obligatoire | Description |
|---|---|:-:|---|
| `externalUserId` | `String` | ✅ | Identifiant de l'utilisateur dans votre système. Automatiquement haché avec SHA-256 avant la transmission, jamais envoyé en texte clair. |

## Démarrer une revalidation silencieuse

****Étape 1** — Implémenter `initializeSDK`**

Appelez la méthode statique `UnicoSDK.initializeSDK`, en passant votre `AcessoBioConfigDataSource` et l'`environment`.

  :::warning[Appelez-la au lancement de l'application]
  `UnicoSDK.initializeSDK` doit être appelée le plus tôt possible au lancement de l'application (par exemple, `application(_:didFinishLaunchingWithOptions:)`). L'appeler plus tard réduit le temps de traitement en arrière-plan et augmente le risque de réponses d'authentification non concluantes.
  :::

  ### Swift

    ```swift
    UnicoSDK.initializeSDK(
        config: YourUnicoConfig(),
        environment: .UAT
    )
    ```

### Objective-C

    ```objectivec
    [UnicoSDK initializeSDKWithConfig:[YourUnicoConfig new] environment:UAT];
    ```

  Le `config` est le même `AcessoBioConfigDataSource` que vous implémentez déjà pour la capture — le `sdkKey` provient de `getHostKey()` et le bundle de `getBundleIdentifier()` :

  ```swift
  final class YourUnicoConfig: NSObject, AcessoBioConfigDataSource {
      func getBundleIdentifier() -> String { "your_bundle_id" }
      func getHostKey() -> String { "your_sdk_key" }
  }
  ```

  Si `environment` est omis, la valeur par défaut est `.PROD`.

****Étape 2** — Implémenter `startSilentValidation`**

Après `initializeSDK`, associez la collecte déjà en cours à l'utilisateur identifié en appelant `startSilentValidation` avec un `PrepareInfo` contenant l'`externalUserId`.

  ### Swift

    ```swift
    let prepareInfo = PrepareInfo(externalUserId: "external_user_id")

    UnicoSDK.startSilentValidation(prepareInfo: prepareInfo) { result in
        switch result {
        case .success:
            break
        case .failure(let error):
            print(error.code, error.desc, error.info)
        }
    }
    ```

### Objective-C

    ```objectivec
    PrepareInfo *prepareInfo = [[PrepareInfo alloc] initWithExternalUserId:@"external_user_id"
                                                                  useCase:nil];

    [UnicoSDK startSilentValidationWithPrepareInfo:prepareInfo
                                   errorCompletion:^(ErrorBio * _Nullable error) {
        if (error == nil) {
            // ...
        } else {
            // error.code, error.desc, error.info
        }
    }];
    ```

  Si la validation a lieu au début du flux, par exemple lors de la connexion, attendez le callback de succès avant de passer à l'étape 3.

  ## Erreurs

  | Code | Signification |
  |---|---|
  | `75001` | SDK non initialisé. `initializeSDK` n'a pas été appelée, n'a pas encore terminé, ou a échoué. |
  | `75000` | Échec générique de capture. |

****Étape 3** — Créer le processus et authentifier**

Avec la validation en cours, créez le processus de vérification pour finaliser l'authentification. Voir [Référence API ▸ API ▸ Créer un processus](/dual-api/developers/api-reference/api/post-processes).

  Incluez le même `externalUserId` envoyé dans le `PrepareInfo` à l'étape 2 dans le corps de la requête — c'est ce qui permet au backend de corréler la création du processus avec la validation déjà en cours.

  ```bash
  curl -X POST https://api.id.unico.app/processes/v1 \
    -H "Authorization: Bearer $TOKEN" \
    -H "APIKEY: $API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "subject": {
        "duiType": 1,
        "code": "12345678909",
        "name": "Luke Skywalker",
        "gender": "M",
        "birthDate": "2000-05-20",
        "email": "luke@example.com",
        "phone": "5519725570707"
      },
      "useCase": "Onboarding",
      "externalUserId": "external_user_id"
    }'
  ```

  La réponse inclut le champ `silentAuth.result` avec le résultat de l'authentification :

  ```json
  {
      "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
      "status": 3,
      "silentAuth": {
          "result": "yes"
      }
  }
  ```

  | Champ | Type | Description |
  |---|---|---|
  | `silentAuth.result` | string | `yes` ou `no` — voir les valeurs possibles ci-dessous. |

  <details>
  **`silentAuth.result` — valeurs possibles**

  | Valeur | Signification |
  |---|---|
  | `yes` | Authentification approuvée, utilisateur reconnu avec une confiance suffisante, aucune capture supplémentaire nécessaire. |
  | `no` | Données insuffisantes pour approuver silencieusement. Il est recommandé de procéder à une authentification par biométrie (selfie) ou une autre méthode alternative. |

</details>