Я новичок в SAML 2, и я работаю над инструментом, который требует SSO, но я не знаю, как это сделать. Вот поток:
1) Пользователь обращается к основному веб-сайту и выбирает вход в систему. 2) Пользователь вводит регистрационную информацию и отправляет 3) Система проверяет учетные данные, генерирует ответ SAML и перенаправляет пользователя на новый инструмент вместе с ответом SAML как переменной POST. 4) Новый инструмент анализирует ответ, сохраняет / обновляет информацию в базе данных и создает активный сеанс для пользователя.
1,2 и 3 уже созданы на основном веб-сайте. Я работаю над 4. Основные разработчики предоставили нам образец ответа SAML и сертификат. У меня есть 2 вопроса / вопросы:
1) Используя форму SSO на тестовом сервере, я ввел URL-адрес возврата в php-файл на моем сервере и отправил форму. Он зарегистрировал меня и перенаправил меня на страницу моего сервера. Ниже приведен код страницы, а ниже:
<?php var_dump($_POST); ?>
Вывод:
array(0) { }
Неужели я прав? Я проверил использование Firebug в Firefox, и я мог найти samlresponse там где-то, но я не уверен, как именно привести его на страницу. Любая помощь?
2) Используя образец ответа SAML, мы смогли закодировать небольшой скрипт, который анализирует образец и печатает 2-3 атрибута внутри. Это правильный способ сделать это, или есть ли более доступные решения с открытым исходным кодом?
Я пробовал читать на SimpleSAMLPHP, OneLogin и еще пару таких пакетов, но они кажутся слишком сложными, тогда как я чувствую, что я должен достичь здесь, может быть сделано с помощью методов / решений намного проще. Кроме того, в пакетах есть все возможности предлагать SAML, тогда как я просто получаю и разбираю ответ.
Благодарим вас за помощь в продвижении! ура
Если вы хотите выполнить ручную разборку и обработку сообщений SAML, OpenSAML может быть способом. Это библиотека очень низкого уровня, и в ней задействовано много ручного труда.
Вот веб-страница OpenSAML
Вам нужно будет изучить спецификацию SAML
Моя книга «Руководство по OpenSAML» дает хорошее представление и шаг за шагом на SAML и в библиотеке OpenSAML.
Также в моем блоге есть несколько примеров. http://blog.samlsecurity.com/search/label/OpenSAML http://blog.samlsecurity.com/search/label/SAML
Честно говоря, разбор и проверка ответа SAML не является тривиальным. SP должен знать EntityDescriptor (ы) IdP, и IdP должен знать EntityDescriptor (ы) SP. И есть несколько привязок / профилей. И Response / Assertion может быть зашифрован / подписан, что означает, что вы должны расшифровать и / или проверить цифровые подписи. SAML – довольно сложный протокол, нет простого способа разобрать / проверить.
Вы можете попробовать кодировать и декодировать ваши SAMLReponses со ссылкой ниже:
https://rnd.feide.no/simplesaml/module.php/saml2debug/debug.php
Вы пытаетесь автоматизировать эти шаги и проанализировать их.
Вы можете использовать библиотеку моделей данных SAML для LightSam php для анализа / сериализации сообщений SAML. Если вы работаете на платформе Symfony2, вы также можете использовать SamlSPBundle . Используя только световой сигнал, получающий ответ SAML и разбор, он будет выглядеть примерно так:
$request = new Request(); $request->setQueryString($_SERVER['QUERY_STRING']); $request->setGet($_GET); $request->setPost($_POST); $request->setRequestMethod($_SERVER['REQUEST_METHOD']); $bindingDetector = new BindingDetector(); $bindingType = $bindingDetector->getBinding($request); $binding = $bidingDetector->instantiate($bindingType); $samlResponse = $binding->receive($request);