Настройка SAML федерации

Cloud.ru позволяет подключать федерации удостоверений совместимые с SAML v2.0. Cloud.ru выступает поставщиком услуг и направляет пользователей проходить аутентификацию на сервере внешнего доверенного поставщика удостоверений (IdP). Вся информация о логинах, паролях пользователя проходящего аутентификацию, хранится в доверенном поставщике удостоверений.

См.также

Подробнее о протоколе в спецификации SAML v2.0 от OASIS

Перед началом работы

Для настройки SAML федерации вам потребуются:

  • Действующий сертификат с типом Signing. Сертификат используется для подписи SAML-сообщений, которыми обмениваются доверенный поставщик удостоверений (IdP) и поставщик услуг — Cloud.ru. Подпись служит доказательством того, что сообщение является подлинным и в него не внесены изменения третьей стороной.

    Примечание

    Обратите внимание, сертификат с типом Encryption, использующийся для шифрования сообщений, для федераций не поддерживается. Для работы федерации обязательно должен быть загружен действующий сертификат с типом Signing.

  • XML-файл с уникальными значениями подключаемого поставщика удостоверений. Файл метаданных группирует вместе все необходимые сведения связанные с SAML.

    Получить этот файл вы можете у своего поставщика удостоверений.

Пример файла метаданных

<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://auth.iam.example.dev/auth/realms/name">
    <SPSSODescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" AuthnRequestsSigned="true" WantAssertionsSigned="true">
        <KeyDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" use="signing">
            <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                <X509Data xmlns="http://www.w3.org/2000/09/xmldsig#">
                    <X509Certificate xmlns="http://www.w3.org/2000/09/xmldsig#">MIICe...r2vzbiGiD5z7bxE=</X509Certificate>
                </X509Data>
            </KeyInfo>
        </KeyDescriptor>
        <SingleLogoutService xmlns="urn:oasis:names:tc:SAML:2.0:metadata" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://auth.iam.example/auth/realms/name/protocol/saml/sso"/>
        <SingleLogoutService xmlns="urn:oasis:names:tc:SAML:2.0:metadata" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://auth.iam.example/auth/realms/name/protocol/saml/sso"/>
        <NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
        <AssertionConsumerService xmlns="urn:oasis:names:tc:SAML:2.0:metadata" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://auth.iam.example/auth/realms/name/protocol/saml/acs" isDefault="true" index="0"/>
        <AttributeConsumingService index="1" isDefault="true">
            <ServiceName xml:lang="en">Required attributes</ServiceName>
            <RequestedAttribute FriendlyName="mail" Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"/>
            <RequestedAttribute FriendlyName="identifier" Name="urn:oasis:names:tc:SAML:attribute:subject-id" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"/>
            <RequestedAttribute FriendlyName="uid" Name="http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"/>
            <RequestedAttribute FriendlyName="surname" Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"/>
            <RequestedAttribute FriendlyName="givenName" Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"/>
        </AttributeConsumingService>
    </SPSSODescriptor>
</EntityDescriptor>

Создать SAML федерацию

  1. Перейдите в раздел Администрирование, на вкладку Федерации.

  2. Нажмите Создать федерацию.

  3. Выберите тип протокола — SAML.

  4. Загрузите XML-файл с метаданными от поставщика удостоверений.

  5. Заполните название и описание федерации.

  6. Задайте длительность сессии — максимальное время жизни SSO сессии.

    Может быть установлено значение от 30 минут до 7 дней.

  7. Загрузите действующий сертификат с типом Signing.

    Если сертификат уже был в загруженном XML-файле от поставщика, его данные добавятся на форму автоматически.

    Вы можете загрузить несколько сертификатов — текущий и те, которые будут действовать после него. Это позволит избежать прерывания работы федерации, когда сертификат истечет.

  8. Заполните параметры Single Logout Service:

    Параметр

    Описание

    Default Binding

    Метод, который используется для единого выхода.

    HTTP-POST URL

    Адрес единого выхода поставщика удостоверений. Указывается при выборе метода POST.

    HTTP-Redirect URL

    Адрес единого выхода поставщика удостоверений. Указывается при выборе метода Redirect.

  9. Заполните параметры Single Sign-On Service:

    Параметр

    Описание

    Default Binding

    Метод, который используется для единого входа.

    HTTP-POST URL

    Страница, на которую будет перенаправлен пользователь для аутентификации. Указывается при выборе метода POST.

    HTTP-Redirect URL

    Страница, на которую будет перенаправлен пользователь для аутентификации. Указывается при выборе метода Redirect.

  10. Нажмите Создать.

Настроить сервер поставщика удостоверений

Для завершения настройки федерации вам необходимо настроить сервер поставщика удостоверений.

После создания федерации скачайте файл с метаданными, в котором содержатся необходимые для настройки уникальные значения поставщика услуг — Cloud.ru. В том числе, в нем уже будет указан ID федерации.

Чтобы обмен данными происходил корректно, на стороне поставщика удостоверений настройте сопоставление между атрибутами SAML-сообщения и персональными данными пользователя, которые хранятся на сервере поставщика удостоверений.

Данные пользователя

Обязательность

Элементы SAML-сообщения

Уникальный идентификатор пользователя

Да

<NameID>

Фамилия

Нет

<Attribute> с параметром Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"

Имя

Нет

<Attribute> с параметром Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"

Почта

Да

<Attribute> с параметром Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"

Номер телефона

Нет

<Attribute> с параметром Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/mobilephone"

Когда сервер поставщика удостоверений будет настроен, повторно авторизуйтесь в личном кабинете. Это позволит системам синхронизироваться и федерация станет активна.

Добавить федеративных пользователей

  1. В разделе Пользователи откройте вкладку Пользователи федерации.

  2. В правом верхнем углу нажмите Добавить пользователя федерации.

  3. Выберите федерацию, в которую нужно включить пользователя.

  4. Укажите email сотрудника. Можно добавить сразу несколько пользователей, если ввести их email через запятую или пробел.

  5. Наделите пользователя необходимыми правами на проекты и платформы. Подробнее о логике ролей смотрите в статье Роли.

  6. Нажмите Добавить.

    Профиль пользователя появится на вкладке Пользователи федерации.

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

  7. Перейдите в раздел Администрирование, на вкладку Федерации.

  8. Скопируйте ID федерации в строке с нужной федерацией. Передайте его пользователям, чтобы они смогли войти в личный кабинет.

Примечание

Прямая ссылка для входа по SSO — https://console.cloud.ru/?iam_idp=%ID_федерации%. ID вашей федерации можно получить у администратора организации.

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

Обновить сертификат

Если срок действия сертификата для федерации истек, загрузите для нее новый действующий сертификат:

  1. Перейдите в раздел Администрирование, на вкладку Федерации.

  2. Нажмите на строку той федерации, для которой будете загружать сертификат.

  3. В блоке Сертификаты нажмите Добавить сертификат и загрузите действующий сертификат с типом Signing.

Запустили Evolution free tier
для Dev & Test
Получить