# Аутентификация {#authentication} Чтобы взаимодействовать с сервером, CLI должен аутентифицировать запросы с помощью [bearer authentication](https://swagger.io/docs/specification/authentication/bearer-authentication/). CLI поддерживает аутентификацию как пользователя, как учетной записи или с помощью маркера OIDC. ## Как пользователь {#as-a-user} При использовании CLI локально на вашем компьютере мы рекомендуем аутентифицироваться как пользователь. Чтобы пройти аутентификацию в качестве пользователя, необходимо выполнить следующую команду: ```bash tuist auth login ``` Команда проведет вас через веб-поток аутентификации. После аутентификации CLI будет хранить долгоживущий токен обновления и короткоживущий токен доступа в каталоге `~/.config/tuist/credentials`. Каждый файл в этой директории представляет домен, на котором вы аутентифицировались, по умолчанию это `tuist.dev.json`. Информация, хранящаяся в этом каталоге, является конфиденциальной, поэтому **позаботьтесь о ее сохранности**. CLI будет автоматически искать учетные данные при выполнении запросов к серверу. Если срок действия маркера доступа истек, CLI будет использовать маркер обновления для получения нового маркера доступа. ## Токены OIDC {#oidc-tokens} В средах CI, поддерживающих OpenID Connect (OIDC), Tuist может выполнять аутентификацию автоматически, не требуя от вас управления долговременными секретами. При работе в поддерживаемой среде CI CLI автоматически определяет поставщика токенов OIDC и обменивает предоставленный CI токен на токен доступа Tuist. ### Поддерживаемые поставщики услуг CI {#supported-ci-providers} - Действия GitHub - CircleCI - Bitrise ### Настройка аутентификации OIDC {#setting-up-oidc-authentication} 1. **Подключите свой репозиторий к Tuist**: Следуйте руководству GitHub integration guide, чтобы подключить свой репозиторий GitHub к проекту Tuist. 2. **Выполните команду `tuist auth login`**: В рабочем процессе CI выполните `tuist auth login` перед любыми командами, требующими аутентификации. CLI автоматически определит среду CI и выполнит аутентификацию с помощью OIDC. Примеры конфигурации для конкретного поставщика см. в руководстве Continuous Integration guide. ### Области применения токенов OIDC {#oidc-token-scopes} Токены OIDC получают группу охвата `ci`, которая предоставляет доступ ко всем проектам, подключенным к репозиторию. Подробную информацию о том, что включает в себя область видимости `ci`, см. в разделе [Группы областей видимости](#scope-groups). ::: tip SECURITY BENEFITS Аутентификация OIDC более безопасна, чем долгоживущие токены, потому что: - Никаких секретов для ротации или управления - Токены недолговечны и привязаны к отдельным рабочим процессам - Аутентификация привязана к идентификатору хранилища. ::: ## Жетоны счета {#account-tokens} Для сред CI, которые не поддерживают OIDC, или когда вам нужен тонкий контроль над разрешениями, вы можете использовать токены учетных записей. Токены учетных записей позволяют точно указать, к каким областям и проектам может получить доступ токен. ### Создание маркера учетной записи {#creating-an-account-token} ```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` (годы). Если не указано, срок действия токена не истекает. | | `-проекты` | Ограничьте доступ токена к определенным дескрипторам проектов. Если не указано, токен имеет доступ ко всем проектам. | ### Доступные диапазоны {#available-scopes} | Область применения | Описание | | ----------------------------- | ---------------------------------------- | | `счет:члены:читать` | Читать членов учетной записи | | `счет:члены:писать` | Управление членами учетной записи | | `счет:реестр:читать` | Чтение из реестра пакетов Swift | | `счет:реестр:запись` | Публикация в реестре пакетов Swift | | `проект:превью:читать` | Скачать предварительные просмотры | | `проект:превьюшки:писать` | Загружайте предварительные просмотры | | `проект:администратор:читать` | Чтение настроек проекта | | `проект:администратор:писать` | Управление настройками проекта | | `проект:кэш:читать` | Загрузите кэшированные двоичные файлы | | `проект:кэш:запись` | Загрузите кэшированные двоичные файлы | | `проект:комплекты:читать` | Посмотреть комплекты | | `проект:комплекты:писать` | Загрузка пакетов | | `проект:тесты:читать` | Прочитать результаты тестирования | | `проект:тесты:писать` | Загрузите результаты тестирования | | `проект:сборки:читать` | Читайте аналитику сборки | | `проект:сборки:писать` | Загрузите аналитику сборки | | `проект:бегает:читает` | Выполнение команды чтения | | `проект:бегает:пишет` | Создание и обновление командных запусков | ### Группы охвата {#scope-groups} Группы диапазонов обеспечивают удобный способ предоставления нескольких связанных диапазонов с одним идентификатором. Когда вы используете группу диапазонов, она автоматически расширяется и включает все отдельные диапазоны, которые она содержит. | Scope Group | Входящие в комплект прицелы | | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | `ci` | `project:cache:write`, `project:previews:write`, `project:bundles:write`, `project:tests:write`, `project:builds:write`, `project:runs:write` | ### Непрерывная интеграция {#continuous-integration} Для сред CI, не поддерживающих OIDC, можно создать маркер учетной записи с группой охвата `ci` для аутентификации рабочих процессов CI: ```bash tuist account tokens create my-account --scopes ci --name ci ``` В результате создается токен со всеми областями, необходимыми для типичных операций CI (кэш, предварительные просмотры, пакеты, тесты, сборки и запуски). Сохраните созданный токен как секрет в вашей среде CI и задайте его в качестве переменной окружения `TUIST_TOKEN`. ### Управление токенами учетных записей {#managing-account-tokens} Чтобы перечислить все токены для учетной записи: ```bash tuist account tokens list my-account ``` Чтобы отозвать маркер по имени: ```bash tuist account tokens revoke my-account ci-cache-token ``` ### Использование токенов учетных записей {#using-account-tokens} Токены учетных записей должны быть определены как переменная среды `TUIST_TOKEN`: ```bash export TUIST_TOKEN=your-account-token ``` ::: tip WHEN TO USE ACCOUNT TOKENS Используйте жетоны счета, когда вам это необходимо: - Аутентификация в средах CI, не поддерживающих OIDC - Тонкий контроль над операциями, которые может выполнять токен - Токен, с помощью которого можно получить доступ к нескольким проектам в рамках учетной записи - Ограниченные по времени токены, срок действия которых автоматически истекает :::