Единый вход с использованием SAML

iSpring Online позволяет использовать SAML для реализации единого входа. SAML – это открытый XML стандарт обмена данными для осуществления аутентификации между поставщиком учётных записей (англ. identity provider, или IdP) и поставщиком сервиса (англ. service provider, или SP). В данном случае, сервисом выступает iSpring Online.

Для настройки нужно

  • Навыки веб-разработки (PHP).

  • Доступ к вашему хостингу с правами администратора.

  • Аккаунт iSpring Online с доступом администратора.

  • Полный доступ к поставщику учетных записей.

Поставщиком учётных записей может выступать:

  • LDAP (Lightweight Directory Access Protocol, упрощённый протокол для доступа к каталогу) – протокол хранения данных об организации, каталогах, пользователях, позволяющий осуществлять аутентификацию.

  • Active Directory (AD) – LDAP-совместимая служба каталогов, разработанная Microsoft. Хранит информацию о сетевых ресурсах: пользователях, компьютерах, файлах, папках и принтерах, а так же обеспечивает их безопасность.

  • База данных SQL на вашем веб-сайте, которая хранит информацию о пользователях (логин или email).

  • Социальная сеть, такая как Facebook. Профиль пользователя может также выступать как идентификатор.

Сценарий аутентификации включает в себя следующие шаги по обеспечению единого входа:

  1. Пользователь запрашивает услугу от поставщика услуг (SP) iSpring Online.

  2. Поставщик услуг (SP) iSpring Online запрашивает подтверждение идентификатора пользователя (логина).

  3. Поставщик учётных записей (IdP) предоставляет подтверждение идентификатора пользователя.

  4. Поставщик сервиса iSpring Online предоставляет пользователю доступ к сервису.

Данный процесс представлен на временной UML-диаграмме ниже.

Для того, чтобы идентифицировать пользователя, поставщик учётных записей (IdP) может запросить информацию у пользователя. Это может быть, например, логин и пароль.

Настройка SAML в СДО

Для настройки iSpring Online как поставщика услуг (SP) для единого входа при помощи SAML, произведите следуйте действия:

  1. Зайдите в свою учётную запись iSpring с правами администратора и введите следующий адрес для настройки единого входа в вашем браузере: https://yourcompany.ispringonline.ru/settings/sso

  2. Заполните форму, указав URL и другие детали вашего IdP. Затем нажмите Сохранить.

Metadata Url: Адрес  вашего IdP-сервера, указывающий на файл с мета-данными.

Sign On Url: Путь к серверному скрипту, который генерирует SAML запросы подтверждения идентификатора для осуществления логина.

Logout Url: Путь к серверному скрипту, который генерирует SAML запросы подтверждения идентификатора для осуществления выхода.

Certificate Fingerprint: Сокращёная версия сертификата открытого ключа проверки электронной подписи. Используется для подтверждения подписей запросов, исходящих от поставщика учётных записей (IdP).

Подробнее о сертификатах fingerprint (англ.) →

Настройка SAML на сервере

Мы рекомендуем использовать библиотеку https://simplesamlphp.org/~~HEAD=pobj для настройки IdP-сервера для осуществления единого входа через SAML 2.0.

Настройка  поставщика услуг

Настройка iSpring Online производится специалистами на нашей стороне. Просто предоставьте нам следующие данные:

  1. URL-адрес поставщика поставщика учётных записей (IdP).

  2. SSL сертификат (server.crt)

  3. Секретный ключ (server.pem)

  4. certFingerprint для быстрой проверки

Конфигурации нашего сервера включает следующие шаги:

  1. Включение имени поставщика учётных записей (IdP) и SSL сертификата в config/authsources.php

'default-sp' => array(

   'saml:SP',

   // The entity ID of the IdP this should SP should contact.

   // Can be NULL/unset, in which case the user will be shown a list of available IdPs.

   'idp' => 'http://samlip.local:9040/saml2/idp/metadata.php',

       'privatekey'  => 'server.pem',

       'certificate' => 'server.crt',

),

  1. Определение SingleSignOnService, SingleLogoutService и certFingerprint в файле metadata/saml20-idp-remote.php

$metadata['http://samlip.local:9040/saml2/idp/metadata.php'] = array(

   'SingleSignOnService'  => 'http://samlip.local:9040/saml2/idp/SSOService.php',

   'SingleLogoutService'  => 'http://samlip.local:9040/saml2/idp/SingleLogoutService.php',

   'certFingerprint'      => 'afe71c28ef740bc87425be13a2263d37971da1f9'

);

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

Для настройки поставщика учётных записей (IdP) дляосуществления авторизации выполните следующие действия:

  1. Включите поддержку SAML 2.0 и Shibboleth 1.3 в файле config/config.php

'enable.saml20-idp' => true,

'enable.shib13-idp' => true,

  1. Включите модуль авторизации. Вы найдете разные модули в папке modules/. Откройте папку интересующего вас метода авторизации и создайте в ней пустой файл с именем enabled.

  2. Произведите настройку выбранного вами модуля авторизации в файле config/authsources.php

$config = array(

   'example-userpass' => array(

       'exampleauth:UserPass',

       'student:studentpass' => array(

           'uid' => array('student'),

           'eduPersonAffiliation' => array('member', 'student'),

       ),

       'employee:employeepass' => array(

           'uid' => array('employee'),

           'eduPersonAffiliation' => array('member', 'employee'),

       ),

   ),

);

  1. Настройте IdP в файле конфигурации saml20-idp-hosted по примеру.

'attributes.NameFormat' => 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',

'authproc' => array(

   // Convert LDAP names to oids.

   100 => array('class' => 'core:AttributeMap', 'name2oid'),

),

  1. Добавьте информацию поставщике услуг в файл metadata/saml20-sp-remote.php.

После этого проверьте работоспособность функции единого входа.

Существует множество других способов осуществления авторизации. По ссылкам ниже вы найдете информацию (англ.) о настройке simpleSAMLphp для следующих поставщиков учётных записей: