Руководство Composer. Аутентификация для приватно размещенных пакетов и репозиториев.
Руководство Composer по Аутентификации для приватно размещенных пакетов и репозиториев.

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Приватный сервер пакетов 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

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

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