我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

此版本的 GitHub Enterprise 将停止服务 此版本的 GitHub Enterprise 已停止服务 2020-11-12. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

其他身份验证方法

您可以在非生产环境中使用基本身份验证进行测试。

本文内容

此文档对您有帮助吗?

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。

虽然 API 提供多种身份验证方法,但我们强烈建议对生产应用程序使用 OAuth。 提供的其他方法旨在用于脚本或测试(即没有必要使用完整 OAuth 方法的情况)。 依赖 GitHub Enterprise 进行身份验证的第三方应用程序不应要求或收集 GitHub Enterprise 凭据。 它们应该使用 OAuth web 工作流程

基本身份验证

API 支持在 RFC2617 中定义的基本身份验证,但有一些细微区别。 主要区别在于 RFC 要求使用 401 Unauthorized 响应来回复未经验证的请求。 在很多情况下这会暴露用户数据的存在。 对于此类请求,GitHub Enterprise API 的响应是 404 Not Found。 这可能导致 HTTP 库假定返回 401 Unauthorized 的问题。 解决方案是手动创建 Authorization 标头。

通过 OAuth 和个人访问令牌

我们建议您使用 OAuth 令牌向 GitHub API 验证。 OAuth 令牌包含个人访问令牌,允许用户随时撤销访问权限。

$ curl -u username:token http(s)://[hostname]/api/v3/user

如果您的工具只支持基本身份验证,但您想要利用 OAuth 访问令牌的安全功能,这个方法非常有用。

通过用户名和密码

要将基本身份验证与 GitHub Enterprise API 结合使用,只需发送与帐户关联的用户名和密码。

例如,如果您通过 cURL 访问 API,则将 <username> 替换为您的 GitHub Enterprise 用户名后,以下命令将对您进行身份验证。 (cURL 将提示您输入密码。)

$ curl -u username http(s)://[hostname]/api/v3/user

如果您启用了双重身份验证,请务必了解如何使用双重身份验证

使用双重身份验证

启用双重身份验证后,REST API 中大多数端点的基本身份验证均要求您使用个人访问令牌或 OAuth 令牌,而不是用户名和密码。

您可以 来生成新的个人访问令牌,或者使用 OAuth 授权 API 中的“创建新授权”端点来生成新的 OAuth 令牌。 更多信息请参阅“创建用于命令行的个人访问令牌”。 然后,您将使用这些令牌向 GitHub API 验证,更多信息请参阅“使用 OAuth 令牌进行身份验证”。 唯一需要使用用户名和密码进行身份验证的时候是创建 OAuth 令牌或使用 OAuth 授权 API 时。

结合使用 OAuth 授权 API 与双重身份验证

当您调用 OAuth 授权 API 时,基本身份验证会要求您使用一次性密码 (OTP) 以及您的用户名和密码,而不是令牌。 当您尝试使用 OAuth 授权 API 进行身份验证时,服务器将响应 401 Unauthorized 和以下标头之一,以指示需要使用双重身份验证代码:

X-GitHub-OTP: required; SMSX-GitHub-OTP: required; app.

此标头指示您的帐户如何接收其双重身份验证代码。 您将通过 SMS 接收 OTP 代码,或者使用 Google Authenticator 或 1Password 等应用程序,具体取决于您的帐户设置。 更多信息请参阅“配置双重身份验证”。 在标头中传递 OTP:

$ curl --request POST \
  --url https://api.github.com/authorizations \
  --header 'authorization: Basic PASSWORD' \
  --header 'content-type: application/json' \
  --header 'x-github-otp: OTP' \
  --data '{"scopes": ["public_repo"], "note": "test"}'

此文档对您有帮助吗?

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。