Spec-Zone.ru › Composer

Аутентификация для частных пакетов и репозиториев

Ваш сервер частных пакетов или система управления версиями, вероятно, защищена одной или несколькими опциями аутентификации. Для того, чтобы ваш проект имел доступ к этим пакетам и репозиториям, вам необходимо указать Composer, как аутентифицироваться на сервере, на котором они размещены.

Принципы аутентификации

Всякий раз, когда Composer сталкивается с защищённым репозиторием Composer, он сначала попытается пройти аутентификацию, используя уже заданные учетные данные. Если ни одна из этих учетных данных не подходит, он запросит учетные данные и сохранит их (или токен, если Composer может его получить).

Тип Сгенерировано с помощью запроса?
http-basic да
Встроенный http-basic нет
HTTP Bearer нет
Пользовательский заголовок нет
gitlab-oauth да
gitlab-token да
github-oauth да
bitbucket-oauth да

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

Учетные данные могут храниться в трёх разных местах; в auth.json для проекта, в глобальном auth.json или в самом composer.json.

Аутентификация в файле auth.json для каждого проекта

В этом методе хранения аутентификации файл auth.json будет присутствовать в той же папке, что и файл composer.json проекта. Вы можете создать и отредактировать этот файл с помощью командной строки или вручную отредактировать или создать его.

Примечание: Убедитесь, что файл auth.json находится в .gitignore, чтобы избежать утечки учетных данных в историю Git.

Глобальные учетные данные для аутентификации

Если вы не хотите указывать учетные данные для каждого проекта, хранение учетных данных глобально может быть лучшим вариантом. Эти учетные данные хранятся в глобальном auth.json в вашем каталоге Composer.

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

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

  • http-basic
  • Встроенный http-basic
  • HTTP Bearer
  • gitlab-oauth
  • gitlab-token
  • github-oauth
  • bitbucket-oauth

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

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

Чтобы вручную отредактировать его, выполните:

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

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

  • http-basic
  • Встроенный http-basic
  • HTTP Bearer
  • пользовательский заголовок
  • gitlab-oauth
  • gitlab-token
  • github-oauth
  • bitbucket-oauth

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

Методы аутентификации

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

Встроенный http-basic

Для встроенного метода аутентификации http-basic учетные данные хранятся не в отдельном auth.json в проекте или глобально, а в composer.json или глобальной конфигурации в том же месте, где определен репозиторий Composer.

Убедитесь, что имя пользователя и пароль закодированы в соответствии с RFC 3986 (2.1. Кодирование процентов). Если, например, имя пользователя — электронный адрес, он должен передаваться как name%40example.com.

Встроенный http-basic с помощью командной строки

php composer.phar config [--global] repositories composer.unique-name https://username:password@repo.example.org

Вручную встроенный 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 scope.

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 и создайте новый токен.

Для общедоступных репозиториев при ограничении скорости, токен без какого-либо определенного scope достаточен (см. (no scope) в документации по scope). Такие токены предоставляют только доступ для чтения к общедоступной информации.

Для частных репозиториев требуется repo scope. Обратите внимание, что токен предоставит широчайший доступ для чтения/записи ко всем вашим частным репозиториям и многому другому — см. документацию по scope для полного списка. По состоянию на ноябрь 2021 года, кажется, что ограничить права таких токенов невозможно.

Дополнительную информацию читайте в документации о персональных токенах доступа, или подпишитесь на задачу по улучшению scoped токенов на GitHub.

github-oauth с помощью командной строки

php composer.phar config [--global] github-oauth.github.com token

В приведенной выше команде ключ конфигурации 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"
        }
    }
}

© Nils Adermann, Jordi Boggiano
Licensed under the MIT License.
https://getcomposer.org/doc/articles/authentication-for-private-packages.md

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API