Skip to main content

其他身份验证方法

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

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

基本身份验证

API 支持 RFC2617 中定义的基本身份验证,但有一些细微差别。 主要区别在于,RFC 要求使用 401 Unauthorized 响应应答未经身份验证的请求。 在很多地方,这会暴露用户数据的存在。 相反,GitHub Enterprise Server API 通过 404 Not Found 进行响应。 这可能会导致假定 401 Unauthorized 响应的 HTTP 库出现问题。 解决方案是手动创建 Authorization 标头。

通过 personal access token

建议使用 personal access token 向 GitHub API 进行身份验证。

$ curl -u USERNAME:TOKEN http(s)://HOSTNAME/api/v3/user

如果你的工具只支持基本身份验证,但你想要利用 personal access token 安全功能,此方法非常有用。

通过用户名和密码

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

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

$ curl -u USERNAME http(s)://HOSTNAME/api/v3/user

如果启用了双因素身份验证,请确保了解如何使用双因素身份验证

使用双重身份验证

启用双因素身份验证后,REST API 中的大多数终结点的基本身份验证要求你使用 personal access token 或 OAuth 令牌,而不是用户名和密码。

可以或使用 OAuth 授权 API 中的“[创建新的授权][/rest/reference/oauth-authorizations#create-a-new-authorization]”终结点生成新的 OAuth 令牌来生成新的 personal access token。 有关详细信息,请参阅“为命令行创建 personal access token”。 然后,你将使用这些令牌通过 GitHub Enterprise Server 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"}'