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