Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Другие методы проверки подлинности

Базовую проверку подлинности можно использовать для тестирования в нерабочей среде.

Хотя API предоставляет несколько методов проверки подлинности, для рабочих приложений настоятельно рекомендуется использовать OAuth. Другие методы предназначены для скриптов или тестирования (т. е. для случаев, когда возможности OAuth избыточны). Сторонние приложения, использующие GitHub Enterprise Server для проверки подлинности, не должны запрашивать или собирать учетные данные GitHub Enterprise Server. Вместо этого они должны использовать веб-поток OAuth.

Обычная проверка подлинности

API поддерживает обычную проверку подлинности согласно RFC2617 с небольшими отличиями. Основное отличие заключается в том, что согласно требованиям RFC на запросы, не прошедшие проверку подлинности, должен предоставляться ответ 401 Unauthorized. Во многих случаях это позволяет узнать о существовании пользовательских данных. Вместо этого API GitHub Enterprise Server возвращает ответ 404 Not Found. Это может привести к проблемам при использовании библиотек HTTP, предполагающих ответ 401 Unauthorized. Решением может быть формирование заголовка Authorization вручную.

Через personal access tokens

Для проверки подлинности в API GitHub рекомендуется использовать personal access tokens.

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

Этот подход полезен, если ваши средства поддерживают только обычную проверку подлинности, но вы хотите воспользоваться преимуществами функций безопасности personal access token.

Имя пользователя и пароль

Чтобы использовать обычную проверку подлинности с API GitHub Enterprise Server, просто отправьте имя пользователя и пароль, связанные с учетной записью.

Например, следующая curl команда API будет выполнять проверку подлинности, если вы замените <username> именем пользователя GitHub Enterprise Server. (Curl предложит ввести пароль.)

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

Если у вас включена двухфакторная проверка подлинности, убедитесь в том, что вы знаете принципы ее работы.

Работа с двухфакторной проверкой подлинности

Если включена двухфакторная проверка подлинности, обычная проверка подлинности для большинства конечных точек в REST API требует использования personal access token или маркера OAuth вместо имени пользователя и пароля.

Вы можете создать новый personal access token или с помощью Конечная точка "[Создать новую авторизацию][/rest/reference/oauth-authorizations#create-a-new-authorization]" в API авторизации OAuth для создания нового маркера OAuth. Дополнительные сведения см. в разделе Создание personal access token для командной строки. Затем эти токены используются для проверки подлинности с помощью токена OAuth в API GitHub Enterprise Server. Пройти проверку подлинности с помощью имени пользователя и пароля нужно всего один раз — при создании токена OAuth или использовании API авторизации OAuth.

Использование API авторизации OAuth с двухфакторной проверкой подлинности

При вызове API авторизации OAuth обычная проверка подлинности требует использования одноразовых паролей (OTP) и имени пользователя и пароля вместо токенов. При попытке пройти проверку подлинности с помощью API авторизации OAuth сервер вернет ответ 401 Unauthorized и один из следующих заголовков, чтобы сообщить вам о том, что нужен код двухфакторной проверки подлинности:

X-GitHub-OTP: required; SMS или X-GitHub-OTP: required; app.

В этом заголовке указано, как ваша учетная запись получает коды двухфакторной проверки подлинности. В зависимости от того, как настроена учетная запись, вы получаете коды OTP через SMS или используете специальное приложение, например Google Authenticator или 1Password. Подробнее: Настройка двухфакторной проверки подлинности. Передайте одноразовый пароль в заголовке:

$ 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"}'