Skip to main content

刷新用户访问令牌

要实施定期令牌轮换并减少受威胁令牌的影响,你可以将 GitHub App配置为使用过期的用户访问令牌。

关于过期的用户访问令牌

注意:过期的用户访问令牌目前是一项可选功能,可能会有变动。 有关详细信息,请参阅“GitHub 应用的用户到服务器访问令牌过期”。

要实施定期令牌轮换并减少受威胁令牌的影响,你可以将 GitHub App配置为使用过期的用户访问令牌。 如果应用使用过期的用户访问令牌,在你生成用户访问令牌时,将收到一个刷新令牌。 用户访问令牌在 8 小时后过期,刷新令牌在 6 个月后过期。 有关详细信息,请参阅“为 GitHub 应用生成用户访问令牌”。

可以使用刷新令牌生成新的用户访问令牌和新的刷新令牌。 一旦你使用刷新令牌后,该刷新令牌和旧的用户访问令牌将不再有效。

如果刷新令牌在使用之前过期,可以通过 Web 应用程序流或设备流发送用户来重新生成用户访问令牌和刷新令牌。 有关详细信息,请参阅“为 GitHub 应用生成用户访问令牌”。

将应用配置为使用过期的用户访问令牌

在创建应用时,除非选择退出,否则将启用用户访问令牌的过期时间。有关详细信息,请参阅“注册 GitHub 应用”。 也可以在创建应用后配置此设置。

  1. 在 GitHub 上任意页的右上角,单击你的个人资料照片。

  2. 导航到你的帐户设置。

    • 对于由个人帐户拥有的应用,请单击“设置”****。
    • 对于组织拥有的应用:
      1. 单击“你的组织”。
      2. 在组织的右侧,单击设置
    • 对于由企业拥有的应用:
      1. 如果使用的是 Enterprise Managed Users,请单击你的企业,以直接转到企业帐户设置。
      2. 如果使用的是个人帐户,请单击你的企业,然后单击企业右侧的设置
  3. 导航到 GitHub App 设置。

    • 对于由个人帐户或组织拥有的应用:
      1. 在左侧边栏中,单击 开发人员设置,然后单击 GitHub Apps
    • 对于由企业拥有的应用:
      1. 在左侧边栏中,在“设置”下,单击 GitHub Apps
  4. 在要修改的 GitHub App旁边,单击“编辑”。

  5. 在 GitHub Apps设置边栏中,单击“可选功能”。

  6. 在“用户到服务器令牌过期”旁边,单击“选择加入”或“选择退出”。此设置可能需要几秒钟才能应用 。

    GitHub 建议选择使用此功能以提高安全性。

如果选择使用在已生成用户访问令牌后过期的用户访问令牌,则以前生成的用户访问令牌不会过期。 可以使用 DELETE /applications/CLIENT_ID/token 终结点来删除这些令牌。 有关详细信息,请参阅“用于 OAuth 授权的 REST API 终结点”。

使用刷新令牌刷新用户访问令牌

  1. 向此 URL 发出 POST 请求,以及以下查询参数:https://github.com/login/oauth/access_token

    查询参数类型说明
    client_idstring必填。 GitHub App 的客户端 ID。 客户端 ID 不同于应用 ID。 可以在应用的设置页上找到客户端 ID。
    client_secretstring除非使用设备流生成了用户访问令牌,否则是必需的。 GitHub App 的客户端密码。
    grant_typestring**** 必需。 该值必须为“refresh_token”。
    refresh_tokenstring必填。 你在生成用户访问令牌时收到的刷新令牌。
  2. GitHub 将做出包含以下参数的响应:

    响应参数类型说明
    access_tokenstring用户访问令牌。 令牌以 ghu_ 开头。
    expires_inintegeraccess_token 过期前需经历的秒数。 如果禁用了用户访问令牌的有效期限,将省略此参数。 值将始终为 28800(8 小时)。
    refresh_tokenstring刷新令牌。 如果禁用了用户访问令牌的有效期限,将省略此参数。 令牌以 ghr_ 开头。
    refresh_token_expires_inintegerrefresh_token 过期前需经历的秒数。 如果禁用了用户访问令牌的有效期限,将省略此参数。 值将始终为 15897600(6 个月)。
    scopestring令牌具有的范围。 此值将始终为空字符串。 不同于传统的 OAuth 标记,用户访问令牌仅限于应用和用户拥有的权限。
    token_typestring令牌类型。 值将始终为 bearer