Руководство 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.

Изменение глобальных учетных данных с помощью командной строки.

Для всех методов аутентификации есть возможность редактировать их с помощью командной строки.

Ручное редактирование глобальных учетных данных аутентификации.

Примечание: Не рекомендуется вручную редактировать параметры аутентификации, так как это может привести к некорректному json. Вместо этого лучше использовать командную строку.

Для ручного редактирования выполните:

php composer.phar config --global --editor [--auth]

О конкретных реализациях аутентификации см. в соответствующих разделах:

Редактирование этого файла вручную вместо использования командной строки может привести к ошибке 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

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню