Единый вход с использованием 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. Профиль пользователя может также выступать как идентификатор.
Сценарий аутентификации включает в себя следующие шаги по обеспечению единого входа:
-
Пользователь запрашивает услугу от поставщика услуг (SP) iSpring Online.
-
Поставщик услуг (SP) iSpring Online запрашивает подтверждение идентификатора пользователя (логина).
-
Поставщик учётных записей (IdP) предоставляет подтверждение идентификатора пользователя.
-
Поставщик сервиса iSpring Online предоставляет пользователю доступ к сервису.
Данный процесс представлен на временной UML-диаграмме ниже.
Для того, чтобы идентифицировать пользователя, поставщик учётных записей (IdP) может запросить информацию у пользователя. Это может быть, например, логин и пароль.
Настройка SAML в СДО
Для настройки iSpring Online как поставщика услуг (SP) для единого входа при помощи SAML, произведите следуйте действия:
-
Зайдите в свою учётную запись iSpring с правами администратора и введите следующий адрес для настройки единого входа в вашем браузере: https://yourcompany.ispringonline.ru/settings/sso
-
Заполните форму, указав 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 производится специалистами на нашей стороне. Просто предоставьте нам следующие данные:
-
URL-адрес поставщика поставщика учётных записей (IdP).
-
SSL сертификат (server.crt)
-
Секретный ключ (server.pem)
-
certFingerprint для быстрой проверки
Конфигурации нашего сервера включает следующие шаги:
-
Включение имени поставщика учётных записей (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',
),
-
Определение 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) дляосуществления авторизации выполните следующие действия:
-
Включите поддержку SAML 2.0 и Shibboleth 1.3 в файле config/config.php
'enable.saml20-idp' => true,
'enable.shib13-idp' => true,
-
Включите модуль авторизации. Вы найдете разные модули в папке modules/. Откройте папку интересующего вас метода авторизации и создайте в ней пустой файл с именем enabled.
-
Произведите настройку выбранного вами модуля авторизации в файле 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'),
),
),
);
-
Настройте 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'),
),
-
Добавьте информацию поставщике услуг в файл metadata/saml20-sp-remote.php.
$metadata['https://sp.example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array(
'AssertionConsumerService' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',
'SingleLogoutService' => 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',
);
После этого проверьте работоспособность функции единого входа.
Существует множество других способов осуществления авторизации. По ссылкам ниже вы найдете информацию (англ.) о настройке simpleSAMLphp для следующих поставщиков учётных записей: