Skip to content

Аутентификация

Чтобы взаимодействовать с сервером, CLI должен аутентифицировать запросы с помощью bearer authentication. CLI поддерживает аутентификацию как пользователя, как учетной записи или с помощью маркера OIDC.

Как пользователь#

При использовании CLI локально на вашем компьютере мы рекомендуем аутентифицироваться как пользователь. Чтобы пройти аутентификацию в качестве пользователя, необходимо выполнить следующую команду:

bash
tuist auth login

Команда проведет вас через веб-поток аутентификации. После аутентификации CLI будет хранить долгоживущий токен обновления и короткоживущий токен доступа в каталоге ~/.config/tuist/credentials. Каждый файл в этой директории представляет домен, на котором вы аутентифицировались, по умолчанию это tuist.dev.json. Информация, хранящаяся в этом каталоге, является конфиденциальной, поэтому позаботьтесь о ее сохранности.

CLI будет автоматически искать учетные данные при выполнении запросов к серверу. Если срок действия маркера доступа истек, CLI будет использовать маркер обновления для получения нового маркера доступа.

Токены OIDC#

В средах CI, поддерживающих OpenID Connect (OIDC), Tuist может выполнять аутентификацию автоматически, не требуя от вас управления долговременными секретами. При работе в поддерживаемой среде CI CLI автоматически определяет поставщика токенов OIDC и обменивает предоставленный CI токен на токен доступа Tuist.

Поддерживаемые поставщики услуг CI#

  • Действия GitHub
  • CircleCI
  • Bitrise

Настройка аутентификации OIDC#

  1. Подключите свой репозиторий к Tuist: Следуйте руководству GitHub integration guide, чтобы подключить свой репозиторий GitHub к проекту Tuist.

  2. Выполните команду tuist auth login: В рабочем процессе CI выполните tuist auth login перед любыми командами, требующими аутентификации. CLI автоматически определит среду CI и выполнит аутентификацию с помощью OIDC.

Примеры конфигурации для конкретного поставщика см. в руководстве Continuous Integration guide.

Области применения токенов OIDC#

Токены OIDC получают группу охвата ci, которая предоставляет доступ ко всем проектам, подключенным к репозиторию. Подробную информацию о том, что включает в себя область видимости ci, см. в разделе Группы областей видимости.

Security Benefits

Аутентификация OIDC более безопасна, чем долгоживущие токены, потому что:

  • Никаких секретов для ротации или управления
  • Токены недолговечны и привязаны к отдельным рабочим процессам
  • Аутентификация привязана к идентификатору хранилища.

Жетоны счета#

Для сред CI, которые не поддерживают OIDC, или когда вам нужен тонкий контроль над разрешениями, вы можете использовать токены учетных записей. Токены учетных записей позволяют точно указать, к каким областям и проектам может получить доступ токен.

Создание маркера учетной записи#

bash
tuist account tokens create my-account \
--scopes project:cache:read project:cache:write \
--name ci-cache-token \
--expires 1y

Команда принимает следующие параметры:

Вариант Описание
-области Требуется. Список областей, разделенных запятыми, для предоставления токена.
--имя Требуется. Уникальный идентификатор токена (1-32 символа, только буквенно-цифровые символы, дефисы и подчеркивания).
-истекает Необязательно. Когда срок действия токена должен истечь. Используйте формат 30d (дни), 6m (месяцы) или 1y (годы). Если не указано, срок действия токена не истекает.
-проекты Ограничьте доступ токена к определенным дескрипторам проектов. Если не указано, токен имеет доступ ко всем проектам.

Доступные диапазоны#

Область применения Описание
счет:члены:читать Читать членов учетной записи
счет:члены:писать Управление членами учетной записи
счет:реестр:читать Чтение из реестра пакетов Swift
счет:реестр:запись Публикация в реестре пакетов Swift
проект:превью:читать Скачать предварительные просмотры
проект:превьюшки:писать Загружайте предварительные просмотры
проект:администратор:читать Чтение настроек проекта
проект:администратор:писать Управление настройками проекта
проект:кэш:читать Загрузите кэшированные двоичные файлы
проект:кэш:запись Загрузите кэшированные двоичные файлы
проект:комплекты:читать Посмотреть комплекты
проект:комплекты:писать Загрузка пакетов
проект:тесты:читать Прочитать результаты тестирования
проект:тесты:писать Загрузите результаты тестирования
проект:сборки:читать Читайте аналитику сборки
проект:сборки:писать Загрузите аналитику сборки
проект:бегает:читает Выполнение команды чтения
проект:бегает:пишет Создание и обновление командных запусков

Группы охвата#

Группы диапазонов обеспечивают удобный способ предоставления нескольких связанных диапазонов с одним идентификатором. Когда вы используете группу диапазонов, она автоматически расширяется и включает все отдельные диапазоны, которые она содержит.

Scope Group Входящие в комплект прицелы
ci project:cache:write, project:previews:write, project:bundles:write, project:tests:write, project:builds:write, project:runs:write

Непрерывная интеграция#

Для сред CI, не поддерживающих OIDC, можно создать маркер учетной записи с группой охвата ci для аутентификации рабочих процессов CI:

bash
tuist account tokens create my-account --scopes ci --name ci

В результате создается токен со всеми областями, необходимыми для типичных операций CI (кэш, предварительные просмотры, пакеты, тесты, сборки и запуски). Сохраните созданный токен как секрет в вашей среде CI и задайте его в качестве переменной окружения TUIST_TOKEN.

Управление токенами учетных записей#

Чтобы перечислить все токены для учетной записи:

bash
tuist account tokens list my-account

Чтобы отозвать маркер по имени:

bash
tuist account tokens revoke my-account ci-cache-token

Использование токенов учетных записей#

Токены учетных записей должны быть определены как переменная среды TUIST_TOKEN:

bash
export TUIST_TOKEN=your-account-token
When To Use Account Tokens

Используйте жетоны счета, когда вам это необходимо:

  • Аутентификация в средах CI, не поддерживающих OIDC
  • Тонкий контроль над операциями, которые может выполнять токен
  • Токен, с помощью которого можно получить доступ к нескольким проектам в рамках учетной записи
  • Ограниченные по времени токены, срок действия которых автоматически истекает