ОКТА САМЛ Подпись заверение

Мое приложение (PHP) получает ответ SAML от OKTA, который имеет значение подписи, и у меня также есть сертификат OKTA, который имеет открытый ключ. Мое приложение делает следующее,

  1. Получает открытый ключ из сертификата.
  2. Получает значение подписи из отправленного ему SAML.
  3. Теперь он использует функцию openssl_verify ($ data, $ signature, $ pubkeykey, «sha1WithRSAEncryption»); Поскольку $ data — это содержимое, используемое OKTA для подписания ответа saml, я не уверен, что нужно установить $ data.

Мой код,

$pubkeyid = openssl_pkey_get_details(openssl_pkey_get_public(file_get_contents("okta.cert")));
$pubkeyid = $pubkeyid["key"];
$signature = "<get it form SAML Response>";
$data = ???? (what should be provided)
$ok = openssl_verify($data, $signature, $pubkeyid,"sha1WithRSAEncryption");

Я всегда получаю 0, когда назначаю значение данных для ответа SAML, отправляемого приложению.
Я что-то пропустил ?

4

Решение

Проверка подписи SAML намного больше, чем вызов openssl_verify() функция. Я бы предложил использовать для этой цели какую-то библиотеку, например https://github.com/lightSAML/lightSAML.

В этом случае, используя LightSAML-Core, проверку подписи можно выполнить, как описано на странице их поваренной книги. http://www.lightsaml.com/LightSAML-Core/Cookbook/How-to-verify-signature-of-SAML-message/ в следующих шагах

  • десериализовать XML в объект модели данных — в вашем случае класс Response
  • загрузить открытый ключ IDP из его сертификата из их метаданных
  • вызов validate() метод для свойства подписи ответа

Обратите внимание, что правильная обработка Ответа — это больше, чем просто проверка подписи. Полный профиль адресации единого входа в веб-браузере SAML, который также реализует LightSAML.

Вы можете проверить LightSAML / SpBundle если вы используете Symfony, так как он реализует полный профиль единого входа SAML и интегрируется с безопасностью Symfony, что делает SAML SSO довольно простым в реализации.

Если вы действительно хотите сделать это самостоятельно с нуля, вы можете проверить, как это делает xmlseclibs, например, в одной из поддерживаемых вилок на https://github.com/robrichards/xmlseclibs.

5

Другие решения

Да, использование правильных инструментов важно. Мы только начинаем идти по этому пути и нашли инструменты разработчика OKTA на сайте OKTA: http://developer.okta.com/docs/sdk/core/api.html.

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

2

По вопросам рекламы [email protected]