(SSO) на русском (, 634 Кб)

advertisement
Как настроить SSO в Службах Google
для вашего домена
В Службах Google вы можете использовать основанную на SAML Систему единого
входа (Single Sign-On (SSO) Service), которая позволяет получить полный контроль над
авторизацией и аутентификацией пользователей вашего домена в Службах Google.
SAML (Security Assertion Markup Language - "Язык разметки утверждений безопасности":)
- расширение языка XML, предназначенное для обмена данными по аутентификации и
авторизации. Любой веб-сервис может использовать SAML для
аутентификации
пользователей через стороннего провайдера аутентификации.
В модели SAML Google выступает в роли поставщика услуг и предоставляет такие
сервисы как Gmail и Partner Start Pages (PSP), а владелец домена – в роли провайдера
аутентификации и контролирует имена и пароли пользователей, а также управляет
аутентификацией и авторизацией пользователей для приложений, предоставляемых Google.
Важно: Система SSO применяется только для веб-приложений. Если вы хотите
предоставить пользователям доступ к службам Google из настольных приложений, например
доступ к Gmail из почтового клиента – вам будет необходимо синхронизировать вашу базу
пользователей с Google через Provisioning API.
Система SSO Служб Google основана на спецификациях SAML v2.0, которые
поддерживаются многими приложениями - их список можно посмотреть на сайте Liberty
Alliance.
Для того, чтобы настроить SSO, Вам понадобится:
• Аккаунт в Службах Google c возможностью использования
(Профессиональный пакет или Службы Google для учебных заведений).
системы
SSO
• Веб-сервер с поддержкой транзакций SAML (например, Tomcat (Apache Tomcat
5.5.17) + Java Web Services Developer Pack 2.0 с XML Java technologies для поддержки
транзакций SAML или веб-сервер с PHP 5 + xmlsec для подписывания ответов SAML).
• Инструмент для проверки вашей инсталляции (вы можете использовать один из
исходных кодов с code.google.com).
В общем случае настройка состоит из следующих этапов:
1. Установка инструмента для проверки работы SAML на ваш сервер и тестирование
работы SAML.
2. Создание страницы для входа пользователя и проверка ее работоспособности.
3. Генерация пары ключей для подписывания и верификации SAML-ответов.
4. Предоставление Google проверочного сертификата или публичного ключа и
включение системы SSO в панели администратора Служб Google.
Пример процесса настройки системы SSO
Конфигурация, используемая в примере:
•
Apache HTTP Server v2.2.4
•
PHP v5.2.6
•
xmlsec v1.2.10 - приложение для подписывания, верификации, шифрования и
расшифровки XML документов. Оно понадобится вам для подписывания ваших
ответов SAML. Исходный код и исполняемые файлы xmlsec доступны на домашней
странице xmlsec.
•
Инструмент для тестирования работы SAML, версия для PHP от 26.07.2007.
Исходный код инструмента вы можете найти среди исходных кодов для PHP на
code.google.com.
Этапы настройки
1. Установка инструмента для
тестирование работы SAML
проверки
работы
SAML
на
ваш
сервер
и
После распаковки архива в директорию веб-сервера у вас получится следующая
структура файлов:
process_response.php - Этот файл получает запрос SAML, разбирает его, вызывает
функцию аутентифигации пользователя, создает и отправляет ответ SAML. Вам потребуется
реализовать этот функционал в вашем приложении.
process_response.php – Этот файл получает запрос SAML, разбирает его, вызывает
функцию аутентифигации пользователя, создает и отправляет ответ SAML. Вам потребуется
реализовать этот функционал в вашем приложении.
saml_util.php – В этом файле собраны функции для генерации ответа SAML.
create_request.php - Этот файл создает запрос SAML. В реальном приложении эти
функции будет выполнять поставщик услуг, т. е. Google. Вам не требуется реализовывать этот
функционал в вашем приложении.
identity_provider.php – Этот файл служит для реализации пользовательского интерфейса
для process_response.php, эти функции не обязательны для реализации в вашем приложении.
saml_demo.php - Этот файл служит для реализации пользовательского интерфейса для
SSO demo, эти функции не потребуются в вашем приложении.
service_provider.php - Этот файл служит для реализации пользовательского интерфейса
для create_request.php, эти функции не потребуются в вашем приложении.
global/ - В этой директории хранятся изображения и таблицы
пользовательского интерфейса, они не потребуются в вашем приложении.
стилей
для
keys/ - В этой директории хранятся публичный и приватный ключи DSA, которые
используются для подписывания ответов SAML. Google также использует публичный ключ для
расшифровки ответов SAML для пользователей в домене psosamldemo.net, который вы можете
использовать для проверки вашей инсталляции SSO.
templates/ - В этой директории находятся шаблоны запросов и ответов SAML. Вы
можете использовать шаблон ответа SAML в вашем приложении.
Убедитесь, что xmlsec доступно для запуска с помощью PHP. Отредактируйте путь к
xmlsec в функции signResponse() файла process_response.php.
Затем
попробуйте
запустить
saml_demo.php,
набрав
http://адрес_сервера/путь _к_директории_SAMLTestTool/saml_demo.php
в
браузере
Вы увидите страницу с двумя фреймами:
В левом фрейме вы сможете сгенерировать и отправить запрос SAML, который будет
принят в правом фрейме:
Если возникнут проблемы с генерацией и подписыванием ответов SAML, вы увидите
сообщение об ошибке. Если ответ SAML будет успешно сгенерирован и подписан, когда вы
отправите
данные
формы,
вы
окажетесь
авторизированы
в
Gmail
как
demouser@psosamldemo.net.
2.
Создание страницы для входа пользователя и проверка ее работоспособности
Вам потребуется создать страницу,
авторизироваться в Службах Google.
через
которую
ваши
пользователи
будут
Сначала вы можете изменить функцию login() в process_response.php так, чтобы она
обращалась к вашей системе управления пользователями и проверить ее работоспособность,
убрав комментарии вокруг формы для логина и пароля в identity_provider.php
<!-- Stage II: Display a Username and Password Field -->
<!-- Remove the comments around the following four lines in Stage II -->
Данные из этой формы будут преданы функции login() как параметры $username и
$password соответственно. Если пользователь успешно авторизован, функция должна вернуть
его имя (username) в Службах Google. Если авторизация не удалась, функция должна вернуть
null.
Замечание: На этом шаге функция все еще должна возвращать "demouser" в случае
успешной авторизации.
Обновив saml_demo.php в браузере вы можете проверить работоспособность вашей
функции, попробовав авторизоваться на psosamldemo.net.
После этого вы можете создать свою страницу, которая будет реализовывать те же
функции, что и process_response.php в удобном вам интерфейсе. Например, вы можете
авторизировать пользователей на основе их cookies и отправлять данные формы с ответом
автоматически.
3.
Генерация пары ключей для верификации SAML-ответов и сертификата в
формате X.509
После того как вы убедились в работоспособности вашей функции аутентификации, вы
можете приступать к изменению кода для авторизации пользователей в Службах Google для
вашего домена. Для подписания и верификации ваших ответов вам понадобится создать пару
ключей DSA или RSA. Вы можете использовать для этого openssl.
После генерации ключей вы можете создать сертификат в формате X.509 чтобы
предоставить его Google. Вы также можете предоставить Google свой публичный ключ, но
привлекательным моментом сертификата является возможность записи в него информации о
владельце ключа.
Обратите внимание, что публичный ключ и сертификат должны быть представлены в
формате DER.
После генерации ключей вам необходимо каждый из них сохранить в отдельный файл и
внести соответствующие изменения в файл process_response.php.
/*
* Stage III: Update the DSA filenames to identify the locations of
* the DSA/RSA keys that digitally sign SAML responses for your
* domain. The keys included in the reference implementation sign SAML
* responses for the psosamldemo.net domain.
*/
$pubKey = 'keys/pubkey.der';
$privKey = 'skeys/privkey.pem';
$keyType = 'dsa';
4.
Предоставление Google проверочного сертификата или публичного ключа и
включение системы SSO в панели администратора Служб Google
В панели администратора выберите Дополнительные инструменты и зайдите в
настройки Системы единого входа. Загрузите ваш файл сертификата или публичного ключа и
укажите адреса необходимых страниц.
После сохранения изменений авторизация в любое из приложений Служб Google будет
происходить через вашу систему SSO.
Download