Skip to main content
Skip to content

Actualisation des jetons d’accès utilisateur

Pour appliquer une rotation régulière des jetons et réduire l’impact d’un jeton compromis, vous pouvez configurer votre GitHub App application pour utiliser des jetons d’accès utilisateur qui expirent.

À propos des jetons d’accès utilisateur arrivés à expiration

Remarque

Les jetons d'accès utilisateur qui expirent sont actuellement une fonctionnalité facultative et sont susceptibles d'être modifiés. Pour plus d’informations, consultez Expiration des jetons d'accès utilisateur-serveur pour les applications GitHub.

Pour appliquer une rotation régulière des jetons et réduire l’impact d’un jeton compromis, vous pouvez configurer votre GitHub App application pour utiliser des jetons d’accès utilisateur qui expirent. Si votre application utilise des jetons d’accès utilisateur arrivés à expiration, vous recevrez un jeton d’actualisation lorsque vous générerez un jeton d’accès utilisateur. Le jeton d’accès utilisateur expire au bout de huit heures et le jeton d’actualisation expire au bout de six mois. Pour plus d’informations, consultez « Génération d’un jeton d’accès utilisateur pour une application GitHub ».

Vous pouvez utiliser le jeton d’actualisation pour générer un nouveau jeton d’accès utilisateur et un nouveau jeton d’actualisation. Une fois que vous utilisez un jeton d’actualisation, ce jeton d’actualisation et l’ancien jeton d’accès utilisateur ne fonctionneront plus.

Si votre jeton d’actualisation expire avant de l’utiliser, vous pouvez régénérer un jeton d’accès utilisateur et un jeton d’actualisation en envoyant les utilisateurs via le flux d’applications web ou le flux d’appareils. Pour plus d’informations, consultez « Génération d’un jeton d’accès utilisateur pour une application GitHub ».

Pour tester et déployer progressivement la prise en charge des jetons arrivant à expiration, vous pouvez opter pour une autorisation utilisateur individuelle en demandant le scope offline_access. Lorsque vous demandez offline_access, vous recevrez un jeton d’accès utilisateur arrivant à expiration et un jeton d’actualisation même si votre application n’est pas configurée pour utiliser des jetons d’accès utilisateur arrivant à expiration.

Le scope paramètre n’accorde pas d’autorisations à un GitHub App. La seule valeur prise en charge est offline_access, ce qui force le jeton d’accès de l’utilisateur à expirer.

Configuration de votre application pour utiliser des jetons d’accès utilisateur arrivés à expiration

Lorsque vous créez votre application, l'expiration des jetons d'accès des utilisateurs est activée, à moins que vous ne choisissiez de ne pas le faire. Pour plus d’informations, consultez « Inscription d’une application GitHub ». Vous pouvez également configurer ce paramètre une fois votre application créée.

  1. Dans le coin supérieur droit de n’importe quelle page sur GitHub, cliquez sur votre photo de profil.

  2. Accédez aux paramètres de votre compte.

    • Pour une application appartenant à un compte personnel, cliquez sur Paramètres.
    • Pour une application appartenant à une organisation :
      1. Cliquez sur Vos organisations.
      2. À droite de l’organisation, cliquez sur Paramètres.
  3. Dans la barre latérale gauche, cliquez sur Paramètres de développeur.

  4. Dans la barre latérale à gauche, cliquez sur GitHub Apps .

  5. En regard de ce GitHub App que vous souhaitez modifier, cliquez sur Modifier.

  6. Dans la GitHub Apps barre latérale des paramètres, cliquez sur Fonctionnalités facultatives.

  7. À côté de « Expiration du jeton utilisateur à serveur », cliquez sur Accepter ou Refuser. L’application de ce paramètre peut prendre quelques secondes.

GitHub recommande de choisir cette fonctionnalité pour améliorer la sécurité.

Si vous réactivez les jetons d’accès utilisateur arrivant à expiration une fois que vous avez déjà fait se connecter des utilisateurs et obtenu leur jeton d’accès, ces jetons d’accès utilisateur préexistants n’expireront pas. Vous devez supprimer ces jetons à l’aide du point de terminaison DELETE /applications/CLIENT_ID/token ou faire en sorte que les utilisateurs se réauthentifient afin qu’ils obtiennent un jeton à durée de validité limitée. Pour plus d’informations, consultez « Points de terminaison d’API REST pour les autorisations OAuth ».

Actualisation d’un jeton d’accès utilisateur avec un jeton d’actualisation

  1. Effectuez une requête POST à cette URL, avec les paramètres de requête suivants : http://gfffh3e2b966b640040f3s09bobfqpwpob6qqo.ffgi.yc2.bjmu.edu.cn/login/oauth/access_token

    Paramètre de requête.TypeDescription
    client_idstring

Obligatoire. ID client de votre GitHub App. ID client est différent de l’ID de l’application. Vous pouvez trouver votre ID client dans la page Paramètres de votre application. client_secret | string | Obligatoire sauf si le jeton d’accès utilisateur a été généré à l’aide du flux de l’appareil. Clé secrète client pour votre GitHub App. grant_type | string | Obligatoire. La valeur doit être « refresh_token ». refresh_token | string | Obligatoire. Le jeton d’actualisation que vous avez reçu lorsque vous avez généré un jeton d’accès utilisateur.

  1. GitHub donnera une réponse qui inclut les paramètres suivants :

    Paramètre de réponseTypeDescription
    access_tokenstringLe jeton d’accès de l’utilisateur. Le jeton commence par ghu_.
    expires_inintegerNombre de secondes avant que n’expire access_token. Si le jeton n’expire pas, ce paramètre est omis. La valeur est toujours 28800 (8 heures).
    refresh_tokenstringLe jeton d’actualisation. Si le jeton d’accès n’expire pas, ce paramètre est omis. Le jeton commence par ghr_.
    refresh_token_expires_inintegerNombre de secondes avant que n’expire refresh_token. Si le jeton d’accès n’expire pas, ce paramètre est omis. La valeur est toujours 15897600 (6 mois).
    scopestringLes portées dont dispose le jeton. Cette valeur sera toujours une chaîne vide. Contrairement à un jeton OAuth traditionnel, le jeton d’accès utilisateur est limité aux autorisations dont disposent à la fois votre application et l’utilisateur.
    token_typestringType de token. La valeur est toujours bearer.