> ## 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écouvrez comment ajouter une fonctionnalité de connexion native à votre application iOS native avec Apple.

# Ajouter Sign In with Apple aux applications iOS natives

Vous pouvez ajouter cette fonctionnalité à votre application iOS native afin de permettre à vos utilisateurs de s’authentifier avec Sign In with Apple. Pour en savoir plus sur la mise en œuvre, consultez le [iOS Swift - Sign In with Apple Quickstart](/docs/fr-ca/quickstart/native/ios-swift) d’Auth0.

<div id="how-it-works">
  ## Fonctionnement
</div>

Pour une application native, le flux de connexion Sign In with Apple fonctionne comme suit :

<Frame>
  <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/I7xtPQoqoAFiHQiT2p7p5/8646a5231491dfbe64bd6a825ccc8ce7/apple-siwa-authn-flow.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=0a45412c8d449962db4d89e4c6f96e98" alt="Schéma du flux d’authentification Sign In with Apple" width="1500" height="923" data-path="docs/images/cdy7uua7fh8z/I7xtPQoqoAFiHQiT2p7p5/8646a5231491dfbe64bd6a825ccc8ce7/apple-siwa-authn-flow.png" />
</Frame>

* **Étapes 1 et 2** : L’utilisateur s’authentifie au moyen du SDK d’Apple sur son appareil iOS et reçoit un code d’autorisation dans la réponse. Il n’a pas à quitter l’application ni à utiliser un navigateur pour se connecter.

  <Warning>
    Évitez d’utiliser un nonce. Cela fera échouer la requête envoyée à Apple à l’étape 4, et Auth0 renverra à l’utilisateur une erreur 400 : "Error from Apple connection."
  </Warning>
* **Étape 3** : L’application envoie une requête au point de terminaison `/oauth/token` d’Auth0 afin d’échanger le code d’autorisation Apple contre des jetons Auth0.
* **Étapes 4 et 5** : La plateforme Auth0 échange le code d’autorisation avec Apple contre des jetons. Auth0 valide les jetons et utilise les claims qu’ils contiennent pour construire l’identité de l’utilisateur.
* **Étape 6** : Auth0 enregistre le profil de l’utilisateur, exécute les Rules et l’autorisation, puis émet des <Tooltip tip="Jeton d’accès : justificatif d’autorisation, sous la forme d’une chaîne opaque ou d’un JWT, utilisé pour accéder à une API." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=access+tokens">jetons d’accès</Tooltip> Auth0 (<Tooltip tip="Jeton d’actualisation : jeton utilisé pour obtenir un nouveau jeton d’accès sans obliger les utilisateurs à se connecter de nouveau." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=refresh+tokens">jetons d’actualisation</Tooltip> et <Tooltip tip="jeton d’identité : jeton utilisé pour transmettre des renseignements sur l’identité de l’utilisateur authentifié." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=ID+tokens">jetons d’identité</Tooltip>) selon ce qui est demandé. Ces jetons servent à protéger vos API et vos utilisateurs gérés par Auth0.

<div id="prerequisites">
  ## Prérequis
</div>

Avant de configurer Sign In with Apple pour votre application native dans Auth0, vous devez :

* Avoir un compte [Apple Developer](https://developer.apple.com/programs/), qui est un compte payant d’Apple. (Il n’y a pas d’essai gratuit, sauf si vous faites partie de leur [iOS Developer University Program](https://developer.apple.com/support/compare-memberships/).)
* [Enregistrer votre application dans le portail Apple Developer](https://marketplace.auth0.com/integrations/apple-social-connection) si ce n’est pas déjà fait. Prenez en note les ID et la clé suivants pour les paramètres de connexion de l’application dans le <Tooltip tip="Auth0 Dashboard : le produit principal d’Auth0 pour configurer vos services." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> :

  * App ID
  * Apple Team ID
  * Client Secret Signing Key
  * Key ID
* Si vous utilisez le flux de connexion Classic Login ou intégrez `Lock.js` à votre application, assurez-vous d’utiliser `Lock.js` version 11.16 ou ultérieure.

<div id="configure-and-enable-the-connection-in-auth0">
  ## Configurer et activer la connexion dans Auth0
</div>

Une fois que vous avez obtenu les identifiants nécessaires à partir de votre compte Apple Developer, vous devez configurer le client d’application et les paramètres de la connexion dans Auth0.

1. Accédez à [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/#/applications), choisissez votre application, puis sélectionnez l’icône d’engrenage pour afficher la page des paramètres.
2. Au bas de la page, sélectionnez **Show Advanced Settings**, puis la vue **Device Settings**. Sous **Native Social Login**, activez la bascule **Enable Sign In with Apple**.

   <Frame>
     <img src="https://mintcdn.com/translations/Dcx0M11uuptU53TX/docs/images/cdy7uua7fh8z/2xkQ13r9yCb4GBZdeczZjJ/5bc57b22a0bad292bc9ad28b4884b2b6/Native_App_-_Device_Settings_-_English.png?fit=max&auto=format&n=Dcx0M11uuptU53TX&q=85&s=171d09e910b437e346c3addeb733af85" alt="Paramètres du client d’application : paramètres avancés de l’appareil" width="1018" height="1169" data-path="docs/images/cdy7uua7fh8z/2xkQ13r9yCb4GBZdeczZjJ/5bc57b22a0bad292bc9ad28b4884b2b6/Native_App_-_Device_Settings_-_English.png" />
   </Frame>
3. Sous **iOS**, remplissez le champ **App ID** avec l’App ID/le **Bundle Identifier** de l’application native.
4. Accédez à [Auth0 Dashboard > Authentication > Social](https://manage.auth0.com/#/connections/social), puis sélectionnez **Create Connection**.
5. Sélectionnez la connexion **Apple** et donnez votre consentement.
6. Dans l’onglet **Settings**, remplissez les champs suivants :

   * **Apple Team ID**
   * **Client Secret Signing Key**
   * **Key ID**

     <Frame>
       <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3mTTVYnrwbVYnUx5Mzy0V9/0ab8174a812908c9290663d3d9d05286/dashboard-connections-social-create_enter-details_apple.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=882064d8c3bf80f3ffabf26f8bdab1e2" alt="Paramètres de la connexion sociale Apple" width="1404" height="1416" data-path="docs/images/cdy7uua7fh8z/3mTTVYnrwbVYnUx5Mzy0V9/0ab8174a812908c9290663d3d9d05286/dashboard-connections-social-create_enter-details_apple.png" />
     </Frame>
7. Sélectionnez la vue **Applications** pour activer cette connexion pour votre application.
8. Cliquez sur **Save**.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Les applications natives ne peuvent pas être testées dans le navigateur. Cela signifie que le bouton **Try Connection** de la connexion Apple est utilisé exclusivement pour tester les flux Web.
</Callout>

<div id="logout">
  ## Déconnexion
</div>

Comme la mise en œuvre de la connexion Native iOS n’utilise pas les flows standard basés sur le navigateur, les responsables de l’application doivent aussi veiller à effectuer la déconnexion correctement. Lorsqu’une application doit effectuer une déconnexion, elle doit prendre les mesures suivantes :

* [Révoquer le jeton d’actualisation Auth0](https://auth0.com/docs/api/authentication#revoke-refresh-token)
* Supprimer le jeton d’actualisation Auth0 stocké dans le Keychain iCloud
* Supprimer l’identifiant utilisateur Apple stocké dans le Keychain iCloud
  De plus, gardez à l’esprit que la déconnexion peut résulter d’actions de l’utilisateur (par exemple, lorsqu’il clique sur un bouton « se déconnecter ») ou du fait qu’un utilisateur révoque l’accès à l’application en question. Ce dernier cas sera indiqué par la méthode native [ASAuthorizationAppleIDProvider.getCredentialState](https://developer.apple.com/documentation/authenticationservices/asauthorizationappleidprovider/3175423-getcredentialstate).

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Une particularité de l’IdP d’Apple est qu’il ne renvoie les scopes demandés (comme l’adresse courriel, le prénom et le nom de famille) dans le jeton ID que dans la **première** réponse. Des approches de déconnexion plus radicales (comme la suppression de l’utilisateur) pourraient entraîner une perte d’information de profil, ce qui obligerait les utilisateurs finaux à retirer l’autorisation de l’application puis à l’autoriser de nouveau.
</Callout>

<div id="learn-more">
  ## En savoir plus
</div>

* [Politique de limitation du débit](/docs/fr-ca/troubleshoot/customer-support/operational-policies/rate-limit-policy)
