# Единый вход {#single-sign-on}

Tuist предлагает единый вход как вариант авторизации для повышения безопасности аккаунтов вашей организации.

Единый вход настраивается на вкладке **Аутентификация** в настройках организации. Поддерживаются Google Workspace, Okta, Microsoft Entra ID и пользовательские провайдеры [OAuth 2.0](https://oauth.net/2/).

Microsoft Entra ID — это провайдер OpenID Connect, который Tuist настраивает за вас на основе идентификатора вашего каталога. Всё, что описано в этом руководстве для пользовательских провайдеров, включая проверку домена электронной почты для входа и регистрацию, применимо и к нему.

> [!NOTE]
> Единый вход управляет тем, как участники проходят аутентификацию и могут ли авторизованные пользователи присоединяться автоматически. <.localized_link href="/guides/integrations/authentication/scim">Предоставление доступа через систему управления идентификацией между доменами (SCIM)</.localized_link> определяет, может ли провайдер идентификации создавать, обновлять и удалять участников организации. Для Okta большинство организаций настраивают оба механизма.

## Как работает доступ {#how-access-works}

Идентификатор провайдера, обнаружение при входе и регистрация в организации — это отдельные вопросы:

- **Издатель провайдера:** Организация-провайдер или сервер авторизации, который выполнил аутентификацию пользователя. При поиске связанной идентичности Tuist объединяет провайдера, издателя и стабильный идентификатор пользователя провайдера. Для Okta издатель представлен доменом Okta. Для Microsoft Entra ID он определяется по идентификатору каталога (тенанта). Для пользовательского провайдера он представлен URL-адресом провайдера.
- **Домен электронной почты для входа:** Домен электронной почты, который Tuist использует для обнаружения провайдера Okta или пользовательского провайдера на общей странице входа. После проверки он также определяет, какие адреса электронной почты можно доверять для привязки новых аккаунтов и автоматической регистрации.
- **Политика регистрации:** Определяет, нужен ли пользователю из доверенного домена приглашение или он может присоединиться автоматически.
- **Предоставление доступа:** Создает и управляет членством в организации независимо от процесса входа.

Издатель провайдера и домен электронной почты для входа часто различаются. Например, компания может использовать `example.com` для корпоративной почты, тогда как издателем её провайдера является `https://login.vendor.example.net`. В новых конфигурациях Okta и пользовательских провайдеров эти значения хранятся раздельно.

### Проверка домена электронной почты для входа {#verify-a-login-email-domain}

Конфигурации Okta и пользовательских провайдеров требуют проверенный домен электронной почты для входа, прежде чем они смогут создать новый аккаунт Tuist или привязать существующий аккаунт по его адресу электронной почты. Участники всё ещё могут <.localized_link href="/guides/integrations/authentication/sso#link-an-existing-account">привязать свой существующий аккаунт</.localized_link>, пока домен не проверен.

1. Введите домен электронной почты сотрудников, например `example.com`, в поле **Домен электронной почты для входа**.
2. Сохраните конфигурацию единого входа.
3. Добавьте текстовую запись, показанную Tuist, в конфигурацию [системы доменных имен (DNS)](https://www.cloudflare.com/learning/dns/dns-records/dns-txt-record/) вашего домена.
4. Вернитесь в настройки аутентификации и нажмите **Проверить домен**.

Проверенный домен электронной почты для входа может принадлежать только одной организации Tuist. Изменение домена сбрасывает его проверку и требует публикации новой текстовой записи. Автоматическая регистрация остается приостановленной до проверки домена.

Tuist ежедневно перепроверяет текстовую запись. Если запись перестаёт разрешаться, проверка не сбрасывается сразу: домен сохраняет статус ещё 14 дней, а в настройках аутентификации отображается **Срок проверки истекает** вместе с записью, которую нужно опубликовать повторно. Публикация записи и повторная проверка снимают предупреждение. Домен, запись для которого отсутствует спустя 14 дней, возвращается в непроверенное состояние, и обнаружение провайдера, связывание идентичностей и автоматическая регистрация прекращаются до повторной проверки. Ошибка поиска по любой другой причине не обновляет таймер и не сбрасывает проверку самостоятельно. Домены, проверенные до внедрения ежедневных перепроверок, не перепроверяются.

Google Workspace не требует этого отдельного шага проверки в Tuist, поскольку Google предоставляет проверенный домен Workspace как часть аутентифицированной идентичности.

### Выбор политики регистрации {#choose-an-enrollment-policy}

Tuist поддерживает две политики регистрации:

- **Только по приглашению:** Пользователю требуется приглашение в организацию. Для Okta и пользовательских провайдеров домен электронной почты для входа всё равно должен быть проверен, прежде чем провайдер сможет создать совершенно новый аккаунт Tuist. Приглашенный пользователь с существующим аккаунтом Tuist сначала принимает приглашение, а затем привязывает идентичность провайдера, как описано в разделе <.localized_link href="/guides/integrations/authentication/sso#link-an-existing-account">Привязка существующего аккаунта Tuist</.localized_link>.
- **Автоматическая:** Пользователь, чья аутентифицированная электронная почта совпадает с доверенным доменом, может создать или привязать аккаунт и присоединиться к организации без приглашения. Конфигурации Google используют домен Workspace. Для Okta и пользовательских провайдеров требуется проверенный домен электронной почты для входа.

В конфигурациях Google по умолчанию включена автоматическая регистрация. В новых конфигурациях Okta и пользовательских провайдеров по умолчанию установлена регистрация только по приглашению.

Настройка **Принудительный единый вход** не зависит от регистрации. Доступ к защищенным страницам браузера организации требует сессии, аутентифицированной через её текущего провайдера и издателя (или проверенный Google Workspace). Исторически связанная идентичность или аутентификация через провайдер другой организации недостаточны. Обычный вход в Tuist и доступ к другим аккаунтам остаются доступными; принуждение не предоставляет членство в организации. Анонимные публичные дашборды и временные гранты поддержки операторов сохраняют свои отдельные правила доступа. Страницы предварительного просмотра приложений применяют принуждение только к участникам организации, поэтому ссылки на предварительный просмотр, которыми поделились за пределами организации, продолжают работать для посетителей, которые уже могли их открывать.

### Выбор роли для регистрируемых участников {#choose-the-enrollment-role}

Участники, которые присоединяются автоматически, получают <.localized_link href="/guides/server/accounts-and-projects#roles">роль</.localized_link>, установленную в параметре **Роль для регистрируемых участников**, которая по умолчанию равна `user`, если администратор не изменит её. Установка значения `viewer` открывает вход для всех пользователей в каталоге, не давая каждому возможность вносить изменения.

Этот параметр нельзя установить в значение `admin`, он применяется как к участникам, предоставленным через <.localized_link href="/guides/integrations/authentication/scim">SCIM</.localized_link> без роли, так и к тем, кто входит в систему, и никогда не перезаписывает роль, установленную администратором вручную.

### Привязка существующего аккаунта Tuist {#link-an-existing-account}

Связанная идентичность провайдера выполняет вход во весь аккаунт Tuist, включая все другие организации, к которым принадлежит этот аккаунт. Для Okta и пользовательских провайдеров Tuist автоматически связывает существующий аккаунт только в том случае, если его адрес электронной почты находится в проверенном домене для входа, или если аккаунт был создан через SCIM-предоставление организации.

Участники, чьи аккаунты не соответствуют требованиям, должны самостоятельно связать идентичность:

1. Войдите в Tuist, используя обычный способ входа для этого аккаунта.
2. Откройте Tuist из системы идентификации провайдера, например, через плитку приложения, или откройте один из проектов организации, если в ней включен принудительный единый вход.
3. Подтвердите организацию и аккаунт провайдера идентичности, которые показывает Tuist, затем нажмите **Привязать аккаунт**.

Если участник начинает процесс с единого входа, будучи неавторизованным, ему сначала предлагается войти в систему, после чего Tuist возвращает его к подтверждению. Привязка не зависит от проверки домена, поэтому участники могут использовать единый вход до того, как домен будет проверен.

### Существующие организации {#existing-organizations}

Все организации Okta и с пользовательскими провайдерами используют модель проверенного домена. Временный режим совместимости удален.

Если ваш домен для входа по электронной почте не проверен:

- Существующие связанные участники могут продолжать вход, а существующее принуждение к SSO по-прежнему применяется к участникам организации.
- Страница входа обнаруживает вашего провайдера только через существующее членство в организации.
- Автоматическая регистрация приостановлена, и провайдер не может создавать новые аккаунты Tuist, даже при наличии приглашения.
- Несвязанные участники входят в свой существующий аккаунт Tuist и подтверждают привязку, как описано выше. Аккаунты, созданные через SCIM-предоставление организации, все еще можно привязать при первом входе через SSO.
- Новые регистрации не обязаны использовать вашего провайдера исключительно из-за того, что их адрес электронной почты использует ваш домен.

Существующие включенные настройки регистрации и принуждения остаются сохраненными и могут быть отключены. Администраторы могут редактировать конфигурацию, пока домен не проверен; включение любой из этих настроек требует проверки. Проверка возобновляет автоматическую регистрацию для совпадающих адресов электронной почты, когда эта настройка включена. Поведение Google Workspace остается неизменным.

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

## Google Workspace {#google}

Единый вход Google Workspace аутентифицирует пользователей относительно домена Workspace. Администраторы могут разрешить соответствующим пользователям присоединяться автоматически или требовать приглашение.

> [!NOTE]
> **Предварительные требования**
>
> Вам нужна организация Google Workspace с проверенным доменом. Вы также должны быть аутентифицированы в Google, используя электронную почту, привязанную к настраиваемому вами домену.

### Настройка {#google-setup}

1. Перейдите на вкладку настроек **Аутентификация** вашей организации.
2. Включите единый вход.
3. Выберите **Google** в качестве провайдера.
4. Введите ваш домен Google Workspace, например `example.com`.
5. Выберите **Автоматическая регистрация** или регистрацию только по приглашению. Автоматическая регистрация включена по умолчанию для Google.
6. При необходимости включите **Принудительный единый вход** после тестирования процесса входа.
7. Нажмите **Сохранить изменения**.

## Okta {#okta}

Okta использует [OpenID Connect](https://openid.net/developers/how-connect-works/) для аутентификации участников. Домен Okta идентифицирует издателя провайдера; отдельно проверенный домен для входа по электронной почте управляет обнаружением, привязкой новых аккаунтов и регистрацией.

Если вы также хотите, чтобы Okta автоматически создавал, обновлял или удалял участников, настройте <.localized_link href="/guides/integrations/authentication/scim#okta">предоставление через Okta System for Cross-domain Identity Management</.localized_link> после того, как единый вход начнет работать.

### Шаг 1: Создание приложения Okta {#okta-step-1}

1. В панели администратора Okta перейдите в раздел **Applications > Applications > Create App Integration**.
2. Выберите **OpenID Connect** и **Web Application**.
3. Задайте имя приложения, например `Tuist`. При желании загрузите [логотип Tuist](https://tuist.dev/images/tuist_dashboard.png).
4. Установите **Sign-in redirect URI** равным значению, показанному на странице настроек аутентификации, например `https://tuist.dev/users/auth/okta/callback`.
5. В разделе **Assignments** выберите желаемый контроль доступа и сохраните.
6. Скопируйте **Client ID** и **Client Secret** из общих настроек приложения. Запишите ваш **домен Okta**, например `your-company.okta.com`.
7. При желании, чтобы разрешить вход из панели управления Okta, нажмите **Edit** в General Settings, измените **Login initiated by** на **Either Okta or App**, выберите **Display application icon to users** и установите **Initiate login URI** равным значению, показанному на странице настроек аутентификации.

### Шаг 2: Настройка Tuist {#okta-step-2}

1. Перейдите на вкладку настроек **Authentication** вашей организации.
2. Включите единый вход.
3. Выберите **Okta** в качестве провайдера.
4. Введите **домен Okta**, **Client ID** и **Client Secret**.
5. Введите домен электронной почты сотрудников в поле **Login email domain**. Например, домену Okta `your-company.okta.com` может соответствовать домен для входа по электронной почте `example.com`.
6. Нажмите **Сохранить изменения**.
7. Добавьте текстовую запись, показанную Tuist, к домену для входа по электронной почте, затем нажмите **Verify domain**.
8. Выберите, требуется ли пользователям приглашение или они могут зарегистрироваться автоматически, затем снова сохраните конфигурацию.
9. При необходимости включите **Принудительный единый вход** после тестирования процесса входа.

### Шаг 3: Назначение пользователей приложению Okta {#okta-step-3}

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

Назначение предоставляет доступ к процессу входа, но членство в организации по-прежнему регулируется политикой регистрации. Если те же пользователи предоставляются через System for Cross-domain Identity Management, Tuist связывает идентификатор Okta с аккаунтом, созданным SCIM, при первом входе пользователя. Участник, чей аккаунт существовал до добавления его через SCIM, связывается, когда его адрес электронной почты находится в проверенном домене для входа, или после подтверждения ссылки из своего активного аккаунта.

## Microsoft Entra ID {#microsoft-entra-id}

Microsoft Entra ID аутентифицирует участников через [OpenID Connect](https://openid.net/developers/how-connect-works/). Tuist определяет конечные точки авторизации, токенов и информации о пользователе на основе идентификатора вашего каталога (арендатора), поэтому вам нужно ввести только это значение вместе с учетными данными приложения.

Если вы также хотите, чтобы Entra ID автоматически создавал, обновлял или удалял участников, настройте <.localized_link href="/guides/integrations/authentication/scim#microsoft-entra-id">предоставление через Microsoft Entra ID System for Cross-domain Identity Management</.localized_link> после того, как единый вход начнет работать.

### Шаг 1: Регистрация приложения Entra {#entra-step-1}

1. В [Microsoft Entra admin center](https://entra.microsoft.com) перейдите в раздел **Identity > Applications > App registrations > New registration**.
2. Задайте имя приложения, например `Tuist`.
3. В разделе **Redirect URI** выберите платформу **Web** и введите значение, показанное на странице настроек аутентификации, например `https://tuist.dev/users/auth/oauth2/callback`.
4. Зарегистрируйте приложение, затем скопируйте **Directory (tenant) ID** и **Application (client) ID** с его обзорной страницы.
5. Перейдите в раздел **Certificates & secrets > New client secret**, создайте секрет и скопируйте его **Value**. Microsoft показывает значение только один раз, и у каждого клиентского секрета есть срок действия, поэтому запишите, когда его нужно будет обновить.
6. Перейдите в раздел **API permissions** и убедитесь, что делегированные разрешения Microsoft Graph `openid`, `profile` и `email` предоставлены.
7. При желании, чтобы разрешить участникам начинать процесс входа из портала My Apps, установите **Home page URL** в разделе **Branding & properties** равным значению, показанному на странице настроек аутентификации.

### Шаг 2: Настройка Tuist {#entra-step-2}

1. Перейдите на вкладку настроек **Authentication** вашей организации.
2. Включите единый вход.
3. Выберите **Microsoft Entra ID** в качестве провайдера.
4. Введите **Directory (tenant) ID**, **Client ID** и **Client Secret**.
5. Введите домен электронной почты сотрудников в поле **Login email domain**. Например, каталог, пользователи которого входят в систему как `first.last@example.com`, имеет домен для входа по электронной почте `example.com`.
6. Нажмите **Сохранить изменения**.
7. Добавьте текстовую запись, показанную Tuist, к домену для входа по электронной почте, затем нажмите **Verify domain**.
8. Выберите, требуется ли пользователям приглашение или они могут зарегистрироваться автоматически, затем снова сохраните конфигурацию.
9. При необходимости включите **Принудительный единый вход** после тестирования процесса входа.

### Шаг 3: Назначение пользователей приложению Entra {#entra-step-3}

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

Назначение предоставляет доступ к процессу входа, но членство в организации по-прежнему регулируется политикой регистрации. Если те же пользователи предоставляются через System for Cross-domain Identity Management, Tuist связывает идентификатор Entra с аккаунтом, созданным SCIM, при первом входе пользователя. Участник, чей аккаунт существовал до добавления его через SCIM, связывается, когда его адрес электронной почты находится в проверенном домене для входа, или после подтверждения ссылки из своего активного аккаунта.

### Требования к утверждению email {#entra-email-claim}

Tuist считывает профиль аутентифицированного пользователя из конечной точки информации о пользователе Microsoft Graph, которая возвращает адрес электронной почты только тогда, когда он доступен у пользователя. Пользователь каталога, у которого атрибут `mail` пуст, не может войти в систему, потому что у Tuist нет адреса для сопоставления с доменом для входа по электронной почте.

Убедитесь, что у назначаемых участников заполнен адрес электронной почты в каталоге перед развертыванием единого входа. Пользователи, синхронизированные из локального Active Directory без почтового ящика, являются наиболее частым случаем отсутствия этого атрибута.

### Conditional Access и многофакторная аутентификация {#entra-conditional-access}

Политики Conditional Access, многофакторная аутентификация и политики оценки риска входа применяются к приложению Tuist так же, как и к любому другому приложению Entra, поскольку они оцениваются во время запроса авторизации. Дополнительная настройка Tuist не требуется.

## Пользовательский провайдер OAuth 2.0 {#custom-oauth-2-provider}

Пользовательский провайдер OAuth 2.0 позволяет организации использовать службу идентификации, отличную от Google Workspace или Okta. Конечная точка информации о пользователе провайдера должна возвращать стабильный идентификатор пользователя и адрес электронной почты.

1. В провайдере создайте веб-приложение OAuth 2.0.
2. Установите для **URI перенаправления при входе** и необязательного **URI начала входа** значения, указанные в настройках аутентификации Tuist.
3. В Tuist включите единый вход и выберите **OAuth2**.
4. Введите URL провайдера, конечную точку авторизации, конечную точку токена, конечную точку информации о пользователе, идентификатор клиента и секрет клиента.
5. Введите и сохраните **Домен электронной почты для входа**. Это домен электронной почты сотрудников, а не URL провайдера.
6. Добавьте текстовую запись, показанную Tuist, в домен электронной почты для входа, затем нажмите **Проверить домен**.
7. Выберите регистрацию только по приглашению или автоматическую регистрацию и сохраните конфигурацию.
8. Протестируйте вход перед необязательным включением параметра **Требовать единый вход**.

URL провайдера ограничивает область действия идентификаторов выдающим провайдером. Проверенный домен электронной почты для входа определяет, каким адресам электронной почты Tuist может доверять при связывании или регистрации пользователей.

## Настройка через командную строку {#command-line-configuration}

Интерфейс командной строки позволяет настроить Google Workspace или Okta и выбрать политику регистрации. Например:

```bash
tuist organization update sso example \
  --provider okta \
  --organization-id your-company.okta.com \
  --enrollment-policy invitation-only
```

Microsoft Entra ID и пользовательские провайдеры настраиваются через настройки аутентификации организации, а не через командную строку.

Значение `--organization-id` идентифицирует организацию провайдера. Это не домен электронной почты для входа. Добавьте и проверьте домен электронной почты для входа в настройках аутентификации организации перед регистрацией новых пользователей Okta.

## Устранение неполадок {#troubleshooting}

### Существующие участники могут войти, но новые пользователи не могут {#existing-members-can-sign-in-but-new-users-cannot}

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

### Единый вход требует сначала войти в систему {#single-sign-on-asks-you-to-log-in-first}

Адрес электронной почты вашего аккаунта Tuist не входит в проверенный домен электронной почты для входа организации, или домен еще не проверен, поэтому Tuist не связывает идентификатор провайдера автоматически. Войдите в систему обычным способом и подтвердите связь, как описано в разделе <.localized_link href="/guides/integrations/authentication/sso#link-an-existing-account">Связать существующий аккаунт Tuist</.localized_link>.
### Tuist не может найти организацию для адреса электронной почты {#tuist-cannot-find-an-organization-for-an-email-address}

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

### Проверка домена все еще ожидает выполнения {#domain-verification-remains-pending}

Убедитесь, что имя и значение текстовой записи точно совпадают со значениями, показанными в Tuist. Изменения в системе доменных имен (DNS) могут занимать время для распространения, поэтому повторите проверку после того, как запись станет общедоступной.

### Вход прекратился после смены провайдера {#sign-in-stopped-after-changing-the-provider}

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