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

# Ajouter la détection des robots aux applications natives

> Découvrez comment ajouter une protection et une détection des robots à votre application native qui utilise Auth0.Swift, Auth0.Android, Lock.Swift et Lock.Android.

Vous pouvez ajouter la [détection des robots](/docs/fr-ca/secure/attack-protection/bot-detection) à vos applications natives avec peu ou pas de configuration supplémentaire en fonction de la trousse SDK et du flux d’authentification que vous utilisez.

## Auth0.swift et Auth0.Android

Si vous utilisez la connexion universelle, la détection des robots est automatiquement prise en charge par les versions des trousses SDK suivantes :

* `Auth0.swift` version 1.28.0+
* `Auth0.Android` version 1.25.0+

Si vous n’utilisez pas la connexion universelle, la détection des robots est prise en charge, mais vous devez configurer votre application en conséquence :

* Votre application doit gérer l’exception `require_verification` (qui est activée lorsqu’une tentative de connexion à haut risque est détectée), puis déclencher un flux WebAuth pour rendre une étape de vérification CAPTCHA.
* Lorsque vous déclenchez le flux WebAuth, vous pouvez transmettre le paramètre `login_hint` pour éviter que l’utilisateur n’ait besoin de saisir à nouveau son nom d’utilisateur.

### Exemple Auth0.swift

Si votre application effectue une connexion/inscription à la base de données via l’[Authentication API](/docs/fr-ca/api/authentication), vous devez gérer l’erreur `isVerificationRequired`. Cette erreur indique que la demande a été signalée comme suspecte et qu’une étape de vérification supplémentaire est nécessaire pour authentifier l’utilisateur.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Cette étape de vérification est basée sur le web, vous devez donc utiliser [Connexion universelle](/docs/fr-ca/authenticate/login/auth0-universal-login) pour l’effectuer.
</Callout>

```swift lines expandable theme={null}
Auth0
    .authentication()
    .login(usernameOrEmail: email, 
           password: password, 
           realmOrConnection: connection, 
           scope: scope)
    .start { result in
        switch result {
        case .success(let credentials): // ...
        case .failure(let error) where error.isVerificationRequired:
            DispatchQueue.main.async {
                Auth0
                    .webAuth()
                    .connection(connection)
                    .scope(scope)
                    .useEphemeralSession()
                    // ☝🏼 Otherwise a session cookie will remain
                    .parameters(["login_hint": email])
                    // ☝🏼 So the user doesn't have to type it again
                    .start { result in
                        // ...
                    }
            }
        case .failure(let error): // ...
        }
    }
```

Dans le cas d’une inscription, vous pouvez ajouter [un paramètre supplémentaire](/docs/fr-ca/authenticate/login/auth0-universal-login) pour que l’utilisateur arrive directement sur la page d’inscription :

`.parameters(["login_hint": email, "screen_hint": "signup"])`

Lisez [Premiers pas avec Auth0.swift](https://github.com/auth0/Auth0.swift#getting-started) pour plus de détails sur la configuration de la connexion universelle.

### Exemple Auth0.Android

Si votre application effectue une connexion/inscription à la base de données par le biais de l’Authentication API, vous devez gérer l’erreur `AuthenticationException#isVerificationRequired()`. Cette erreur indique que la demande a été signalée comme suspecte et qu’une étape de vérification supplémentaire est nécessaire pour connecter l’utilisateur.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Cette étape de vérification est basée sur le web, vous devez donc utiliser [Connexion universelle](/docs/fr-ca/authenticate/login/auth0-universal-login) pour l’effectuer.
</Callout>

```swift lines expandable theme={null}
final String email = "username@domain.com";
final String password = "a secret password";
final String realm = "my-database-connection";

AuthenticationAPIClient authentication = new AuthenticationAPIClient(account);
authentication.login(email, password, realm)
        .start(new BaseCallback<Credentials, AuthenticationException>() {

            @Override
            public void onFailure(AuthenticationException error) {
                if (error.isVerificationRequired()){
                    Map<String, Object> params = new HashMap<>();
                    params.put("login_hint", email); // So the user doesn't have to type it again
                    WebAuthProvider.login(account)
                            .withConnection(realm)
                            .withParameters(params)
                            .start(LoginActivity.this, new AuthCallback() {
                                // You might already have an AuthCallback instance defined

                                @Override
                                public void onFailure(@NonNull Dialog dialog) {
                                    // Error dialog available
                                }

                                @Override
                                public void onFailure(AuthenticationException exception) {
                                    // Error
                                }

                                @Override
                                public void onSuccess(@NonNull Credentials credentials) {
                                    // Handle WebAuth success
                                }
                            });
                }
            }

            @Override
            public void onSuccess(Credentials payload) {
                // Handle API success
            }
        });
```

Dans le cas d’une inscription, vous pouvez ajouter [un paramètre supplémentaire](/docs/fr-ca/authenticate/login/auth0-universal-login) pour que l’utilisateur arrive directement sur la page d’inscription :

`params.put("screen_hint", "signup");`

Lisez la [documentation Authentification Auth0.Android avec la trousse SDK de connexion universelle](https://github.com/auth0/Auth0.Android#authentication-with-universal-login) pour plus de détails sur la configuration de la connexion universelle.

## Lock.Swift et Lock.Android

Si vous utilisez la connexion universelle, la détection des robots est automatiquement prise en charge par les versions des trousses SDK suivantes :

* `Lock.Swift` version 2.19.0+
* `Lock.Android` version 2.22.0+

Si vous n’utilisez pas la connexion universelle, la détection des robots est prise en charge, mais vous devez configurer votre application en conséquence :

* Votre application doit gérer l’exception `require_verification` (qui est activée lorsqu’une tentative de connexion à haut risque est détectée), puis déclencher un flux WebAuth pour rendre une étape de vérification CAPTCHA.
* Lorsque vous déclenchez le flux WebAuth, vous pouvez transmettre le paramètre `login_hint` pour éviter que l’utilisateur n’ait besoin de saisir à nouveau son nom d’utilisateur.

## Authentication API

Si vous utilisez directement l’Authentication API, la détection des robots est prise en charge, mais vous devez configurer votre application en conséquence :

* Votre application doit gérer l’erreur `require_verification` (qui est envoyée par l’Authentication API lorsqu’une tentative de connexion à haut risque est détectée), puis déclencher un flux WebAuth pour renvoyer une étape de vérification CAPTCHA.

## En savoir plus

* [Ajouter la détection de robots aux pages de connexion personnalisées](/docs/fr-ca/secure/attack-protection/bot-detection/bot-detection-custom-login-pages)
