- Приватный сервер пакетов Composer
- Принципы аутентификации для использования приватного репозитория Composer
- Способы аутентификации при использования приватного репозитория Composer
Приватный сервер пакетов Composer.
Ваш приватный сервер пакетов или система контроля версий, вероятно, защищены одним или несколькими вариантами аутентификации. Чтобы разрешить вашему проекту доступ к этим пакетам и репозиториям, вам придется указать Composer то, как аутентифицироваться на сервере, на котором они размещены.
Принципы аутентификации для использования приватного репозитория Composer.
Каждый раз, когда Composer сталкивается с защищенным хранилищем, он будет пытаться аутентифицироваться, используя уже определенные учетные данные. Если ни одни из этих учетных данных не применимы, он запросит ввести учетные данные и сохранит их (или токен, если Composer сможет его получить).
Тип | Сгенерировано Prompt? |
http-basic |
Да |
Inline http-basic |
Нет |
HTTP Bearer |
Нет |
Аутентификация токенами | Нет |
gitlab-oauth |
Да |
gitlab-token |
Да |
github-oauth |
Да |
bitbucket-oauth |
Да |
Иногда автоматическая аутентификация невозможна, или же вам может понадобиться заранее определить учетные данные для аутентификации.
Учетные данные могут храниться в 4 различных местах: в auth.json
для проекта, в глобальном auth.json
, в самом composer.json
или в переменной окружения COMPOSER_AUTH
.
Аутентификация в auth.json для каждого проекта.
При данном способе хранения аутентификации файл auth.json
будет находиться в той же папке, что и файл composer.json
проекта. Вы можете либо создать и отредактировать этот файл с помощью командной строки, либо вручную отредактировать или создать его.
Важное примечание: Убедитесь, что файл
auth.json
находится в.gitignore
, чтобы избежать утечки учетных данных в историю git.
Глобальные учетные данные для аутентификации.
Если вы не хотите предоставлять учетные данные для каждого проекта, над которым работаете, лучше хранить учетные данные глобально. Эти учетные данные хранятся в глобальном файле auth.json
в главном каталоге Composer.
Изменение глобальных учетных данных с помощью командной строки.
Для всех методов аутентификации есть возможность редактировать их с помощью командной строки.
http-basic
с помощью командной строкиInline http-basic
с помощью командной строкиHTTP Bearer
аутентификация с помощью командной строкиgitlab-oauth
с помощью командной строкиgitlab-token
с помощью командной строкиgithub-oauth
с помощью командной строкиbitbucket-oauth
с помощью командной строки
Ручное редактирование глобальных учетных данных аутентификации.
Примечание: Не рекомендуется вручную редактировать параметры аутентификации, так как это может привести к некорректному json. Вместо этого лучше использовать командную строку.
Для ручного редактирования выполните:
php composer.phar config --global --editor [--auth]
О конкретных реализациях аутентификации см. в соответствующих разделах:
http-basic
в ручном режимеInline http-basic
в ручном режимеHTTP Bearer
аутентификация в ручном режиме- Аутентификация с помощью токенов в ручном режиме
gitlab-oauth
в ручном режимеgitlab-token
в ручном режимеgithub-oauth
в ручном режимеbitbucket-oauth
в ручном режиме
Редактирование этого файла вручную вместо использования командной строки может привести к ошибке invalid json
. Чтобы исправить это, необходимо открыть файл в редакторе и исправить ошибку. Чтобы найти местоположение вашего глобального файла auth.json
, выполните:
php composer.phar config --global home
В папке будет находиться ваш глобальный файл auth.json
, если он существует.
Вы можете открыть этот файл в своем любимом редакторе и исправить ошибку.
Аутентификация в файле composer.json
Примечание: Это не рекомендуется, поскольку эти учетные данные видны любому, кто имеет доступ к
composer.json
, либо при совместном использовании через систему контроля версий, такую как git, либо при получении злоумышленником доступа (на чтение) к файлам вашего рабочего сервера.
Также можно добавить учетные данные в composer.json
для каждого проекта в разделе config
или непосредственно в определении репозитория.
Аутентификация с использованием переменной среды окружения COMPOSER_AUTH
Примечание: Использование метода переменной среды командной строки также имеет последствия для безопасности. Эти учетные данные, скорее всего, будут храниться в памяти и могут быть сохранены в файл типа
~/.bash_history
(linux) илиConsoleHost_history.txt
(PowerShell в Windows) при закрытии сессии.
Последний вариант предоставления Composer учетных данных - использование переменной окружения COMPOSER_AUTH
. Эти переменные могут быть переданы как переменные командной строки или установлены в фактических переменных окружения. Подробнее об использовании этой переменной окружения читайте здесь.
Способы аутентификации при использования приватного репозитория Composer.
http-basic
http-basic
с помощью командной строки.
php composer.phar config [--global] http-basic.repo.example.org username password
В приведенной выше команде конфигурационный ключ http-basic.repo.example.org
состоит из двух частей:
http-basic
- это метод аутентификации.repo.example.org
- это имя хоста репозитория, которое следует заменить на имя хоста вашего репозитория.
http-basic
в ручном режиме.
php composer.phar config [--global] --editor --auth
{
"http-basic": {
"example.org": {
"username": "username",
"password": "password"
}
}
}
Inline http-basic
Для inline http-basic метода аутентификации учетные данные хранятся не в отдельном auth.json
в проекте или глобально, а в composer.json
или глобальной конфигурации в том же месте, где определяется спецификация репозитория Composer.
Убедитесь, что имя пользователя и пароль закодированы в соответствии с RFC 3986 (2.1. Percent-Encoding). Если имя пользователя, например, является адресом электронной почты, его нужно передать в виде name%40example.com
.
Inline http-basic
с помощью командной строки.
php composer.phar config [--global] repositories composer.unique-name https://username:password@repo.example.org
Inline http-basic
в ручном режиме.
php composer.phar config [--global] --editor
{
"repositories": [
{
"type": "composer",
"url": "https://username:password@example.org"
}
]
}
HTTP Bearer
HTTP Bearer
аутентификация с помощью командной строки.
php composer.phar config [--global] bearer.repo.example.org token
В приведенной выше команде конфигурационный ключ bearer.repo.example.org
состоит из двух частей:
bearer
- метод аутентификации.repo.example.org
- это имя хоста репозитория, которое следует заменить на имя хоста вашего репозитория.
HTTP Bearer
аутентификация в ручном режиме.
php composer.phar config [--global] --editor --auth
{
"bearer": {
"example.org": "TOKEN"
}
}
Аутентификация с помощью токенов.
Аутентификация с помощью токенов в ручном режиме.
php composer.phar config [--global] --editor
{
"repositories": [
{
"type": "composer",
"url": "https://example.org",
"options": {
"http": {
"header": [
"API-TOKEN: YOUR-API-TOKEN"
]
}
}
}
]
}
gitlab-oauth
Примечание: Чтобы аутентификация gitlab работала в приватных экземплярах gitlab, раздел
gitlab-domains
также должен содержать url.
gitlab-oauth
с помощью командной строки.
php composer.phar config [--global] gitlab-oauth.gitlab.example.org token
В приведенной выше команде конфигурационный ключ gitlab-oauth.gitlab.example.org
состоит из двух частей:
gitlab-oauth
- метод аутентификации.gitlab.example.org
- это имя хоста вашего экземпляра GitLab, его следует заменить на имя хоста вашего экземпляра GitLab или использоватьgitlab.com
, если у вас нет собственного хостинга GitLab.
gitlab-oauth
в ручном режиме.
php composer.phar config [--global] --editor --auth
{
"gitlab-oauth": {
"example.org": "token"
}
}
gitlab-token
Примечание: Чтобы аутентификация gitlab работала в приватных экземплярах gitlab, раздел
gitlab-domains
также должен содержать url.
Чтобы создать новый токен доступа, перейдите в раздел токенов доступа на GitLab (или эквивалентный URL в вашем приватном экземпляре) и создайте новый токен. Дополнительную информацию см. в документации по токенам доступа GitLab.
При создании токена gitlab вручную убедитесь, что он имеет область действия read_api
или api
.
gitlab-token
с помощью командной строки.
php composer.phar config [--global] gitlab-token.gitlab.example.org token
В приведенной выше команде ключ конфигурации gitlab-token.gitlab.example.org
состоит из двух частей:
gitlab-token
- это метод аутентификации.gitlab.example.org
- это имя хоста вашего экземпляра GitLab, его следует заменить на имя хоста вашего экземпляра GitLab или использоватьgitlab.com
, если у вас нет собственного хостинга GitLab.
gitlab-token
в ручном режиме.
php composer.phar config [--global] --editor --auth
{
"gitlab-token": {
"example.org": "token"
}
}
github-oauth
Чтобы создать новый токен доступа, зайдите в раздел настроек токена на Github и сгенерируйте новый токен.
Для публичных репозиториев, когда скорость ограничена, достаточно токена без конкретной области применения (см. (no scope
) в документации по областям применения). Такие токены предоставляют доступ к публичной информации только для чтения.
Для приватных репозиториев необходима область действия repo
. Обратите внимание, что токену будет предоставлен широкий доступ на чтение/запись ко всем вашим частным репозиториям и многому другому - полный список см. в документации по scopes. На момент написания статьи (ноябрь 2021 года) дальнейшее ограничение прав доступа для таких токенов не представляется возможным.
Читайте больше о токенах персонального доступа или подпишитесь на дорожную карту по улучшению токенов на GitHub.
github-oauth
с помощью командной строки.
php composer.phar config [--global] github-oauth.github.com token
В приведенной выше команде ключ config github-oauth.github.com
состоит из двух частей:
github-oauth
- метод аутентификации.github.com
- это имя хоста, для которого применяется этот токен. Для GitHub вам, скорее всего, не потребуется его менять.
github-oauth
в ручном режиме.
php composer.phar config [--global] --editor --auth
{
"github-oauth": {
"github.com": "token"
}
}
bitbucket-oauth
Драйвер BitBucket использует OAuth для доступа к вашим личным репозиториям через REST API BitBucket, и для использования драйвера вам потребуется создать пользователя OAuth, обратитесь к документации Atlassian. Вам нужно будет заполнить url обратного вызова чем-то, что удовлетворит BitBucket, но адрес не нужно никуда передавать, и он не используется Composer.
bitbucket-oauth
с помощью командной строки.
php composer.phar config [--global] bitbucket-oauth.bitbucket.org consumer-key consumer-secret
В приведенной выше команде ключ конфигурации bitbucket-oauth.bitbucket.org
состоит из двух частей:
bitbucket-oauth
- метод аутентификации.bitbucket.org
- это имя хоста, для которого применяется этот токен. Если у вас нет приватного экземпляра, вам не нужно его менять.
bitbucket-oauth
в ручном режиме.
php composer.phar config [--global] --editor --auth
{
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "key",
"consumer-secret": "secret"
}
}
}
Перевод с английского официальной документации Composer:
https://getcomposer.org/doc/articles/authentication-for-private-packages.md
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)