Buff Development
Единый вход (SSO)

Настройка единого входа

Раздел «Единый вход»: подключение по OIDC или SAML 2.0, данные для провайдера, метаданные SP, проверка входа. Примеры для Keycloak, AD FS и Entra ID.

Всё настраивается в Настройках → выбрать организацию → раздел «Единый вход». Раздел доступен только владельцу организации.

Раздел «Единый вход»: протокол, поля провайдера, политика участников и — ниже — наши данные для настройки на стороне провайдера.

Настройка идёт в два шага, в любом порядке: зарегистрировать Buff у провайдера и указать данные провайдера в Buff. Данные для первого шага — блок «Данные для настройки на стороне провайдера» внизу раздела; каждое значение копируется одной кнопкой.

OIDC

Зарегистрируйте у провайдера конфиденциальный клиент (с секретом) для потока Authorization Code; PKCE (S256) Buff использует всегда — если провайдер требует включить его явно, включите. Укажите провайдеру:

Параметр у провайдераЗначение
Redirect URI (URI перенаправления, callback)из блока «Данные для настройки» — вида https://buff.systems/app/sso/callback
Grant / потокAuthorization Code
PKCES256
Scopesopenid email profile

Затем в Buff:

ПолеЧто указать
Issuer URLадрес провайдера, по которому доступен /.well-known/openid-configuration. Buff читает документ автоматически: конечные точки, ключи подписи.
Client IDидентификатор зарегистрированного клиента
Client secretего секрет. Хранится в зашифрованном виде и никогда не показывается обратно; чтобы сменить — впишите новый, чтобы оставить — не трогайте поле
Scopesпо умолчанию openid email profile; openid обязателен, email нужен, чтобы создавать аккаунты и привязывать существующие

При сохранении Buff обращается к провайдеру за документом обнаружения: недоступный адрес или неверный секрет вернут ошибку сразу, а не при первом входе сотрудника.

Подключение по OIDC сохранено: секрет не показывается, ниже — «Проверить вход» и данные для провайдера.

Keycloak

Clients → Create client: тип OpenID Connect, Client authentication On, Standard flow On, Direct access grants Off. Valid redirect URIs — наш Redirect URI. Issuer URL для Buff — https://<keycloak>/realms/<realm>; Client secret — на вкладке Credentials. Во вкладке Advanced можно выставить Proof Key for Code Exchange Code Challenge Method = S256.

Microsoft Entra ID

App registrations → New registration; Redirect URI платформы Web — наш Redirect URI. Certificates & secrets → New client secret. Issuer URL — https://login.microsoftonline.com/<tenant-id>/v2.0, Client ID — Application (client) ID. Убедитесь, что в токене есть email (Token configuration → Add optional claim → ID → email), иначе Buff запросит его через userinfo.

AD FS

AD FS по умолчанию выдаёт минимальные ID-токены: удобнее подключаться по SAML (ниже). Для OIDC создайте Application Group типа Server application + Web API, разрешите scope openid и email, добавьте правила выпуска утверждений для email; Issuer URL — https://<adfs>/adfs.

SAML 2.0

Зарегистрируйте у провайдера Service Provider (Relying Party Trust в AD FS, SAML client в Keycloak, Enterprise application в Entra ID) с нашими данными:

Параметр у провайдераЗначение
Entity ID / Identifier / Audienceиз блока «Данные для настройки» — вида https://buff.systems/app/saml/<организация> (у каждой организации свой)
Assertion Consumer Service (ACS, Reply URL), binding HTTP-POSTиз блока «Данные для настройки» — вида https://buff.systems/app/sso/saml/acs
Подписьутверждение (Assertion) должно быть подписано, алгоритм SHA-256. Подпись всего ответа не обязательна
NameIDстабильный идентификатор — формат persistent (рекомендуется) или другой неизменяемый
Атрибутыemail — обязательно (имя атрибута email, mail или стандартный URI-клейм); имя — по желанию
Подпись запросов от Buffне требуется (Buff не подписывает AuthnRequest)

Проще всего дать провайдеру готовый файл: после сохранения SAML-подключения в разделе появляется кнопка «Скачать метаданные SP» — XML с Entity ID и адресом ACS.

Затем в Buff:

ПолеЧто указать
SSO URL провайдераадрес единого входа (SingleSignOnService с binding HTTP-Redirect), например https://<keycloak>/realms/<realm>/protocol/saml или https://<adfs>/adfs/ls/
Entity ID провайдеранеобязательно; если указан — проверяется издатель утверждения
Формат NameIDкакой формат запрашивать у провайдера; по умолчанию persistent
Сертификат подписи провайдера (PEM)сертификат, которым провайдер подписывает утверждения. Можно вставить несколько подряд — старый и новый на время ротации
Подключение по SAML 2.0: адрес единого входа, сертификат провайдера; ниже — Entity ID, ACS и метаданные SP для провайдера.

Keycloak

Clients → Create client: тип SAML, Client ID = наш Entity ID. Settings: Valid redirect URIs и Master SAML Processing URL = наш ACS; Name ID format = persistent; Force POST binding = On. Keys: Client signature required = Off. Signature and Encryption: Sign assertions = On, Signature algorithm RSA_SHA256. Client scopes → добавьте mapper типа User Property: Property email, SAML Attribute Name email, Name Format Basic. Сертификат подписи realm — Realm settings → Keys → RS256 → Certificate (это тело PEM без заголовков: добавьте строки -----BEGIN CERTIFICATE----- / -----END CERTIFICATE-----) или из /realms/<realm>/protocol/saml/descriptor.

AD FS

Add Relying Party Trust → Enter data manually → Identifier = наш Entity ID; SAML 2.0 WebSSO, Relying party SAML 2.0 SSO service URL = наш ACS. Claim Issuance Policy: правило LDAP Attributes → E-Mail-Addresses → E-Mail Address; правило Transform → E-Mail Address → Name ID с форматом Persistent Identifier (или оставьте email как NameID — тогда выберите в Buff формат emailAddress). Сертификат — Service → Certificates → Token-signing → экспорт Base-64 X.509. SSO URL — https://<adfs>/adfs/ls/.

Microsoft Entra ID

Enterprise applications → New application → Create your own → Integrate any other application (Non-gallery) → Single sign-on → SAML. Identifier = наш Entity ID, Reply URL = наш ACS. Attributes & Claims: Unique User Identifier — user.objectid или user.mail; добавьте клейм email = user.mail. SAML Signing Certificate → Certificate (Base64). Login URL — в блок SSO URL провайдера.

Проверить вход

После сохранения ссылка «Проверить вход» открывает экран входа через SSO с уже заполненным именем организации в новой вкладке. Пройдите вход тестовым сотрудником: если провайдер вернул ошибку, она отобразится словами — см. Устранение неполадок. Каждый шаг — настройка, начало входа, результат — виден в журнале аудита организации.

Смена провайдера и отключение

Переключение протокола или провайдера — тем же разделом: сохраните новые данные, ранее созданные аккаунты останутся, но связи «сотрудник у провайдера ↔ аккаунт» установятся заново при следующем входе (по email — см. Домены компании).

«Отключить SSO» удаляет подключение, подтверждённые домены и связи с провайдером. Аккаунты сотрудников остаются участниками организации; войти они смогут по паролю, установив его через «Забыли пароль?» (у созданных через SSO аккаунтов пароля не было).

On this page