Как исправить ответ, не содержащий действительного утверждения saml

Как исправить ответ, не содержащий действительного утверждения saml

Если вы читаете эту статью, значит, вы управляете идентификационными данными пользователей за пределами AWS и используете Identity Provider (IdP) Federation для предоставления этим внешним идентификационным данным разрешения на использование ресурсов AWS в вашей учетной записи.

В этом процессе аутентификации одной из наиболее распространенных ошибок, с которой вам, возможно, придется столкнуться, является “response did not contain a valid saml assertion”, и в этой статье я хочу поделиться с вами некоторыми советами по устранению неполадок, чтобы решить эту проблему.

Расследование проблемы "В ответе SAML не найдено действительное утверждение

Проверка имени атрибута и значения атрибута на вашем IdP

Если вы работаете на AWS (но в целом), недействительное утверждение SAML в основном возникает, когда в SAML-ответе от IdP отсутствует атрибут с именем Name, установленным в https://aws.amazon.com/SAML/Attributes/Role . Атрибут также должен содержать один или несколько элементов AttributeValue, каждый из которых содержит эти две строки, разделенные запятой:

  • ARN роли, с которой может быть сопоставлен пользователь.
  • ARN провайдера SAML.

Например:

<Attribute Name="<https://aws.amazon.com/SAML/Attributes/Role>">

<AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>

</Attribute>

Здесь также приведен пример разрешения для Okta.

Проблемы синхронизации времени между IdP и поставщиком услуг

https://docs.pulsesecure.net/WebHelp/Content/PCS/PCS_AdminGuide_8.2/Investigating a No valid assertion.htm

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

Возможное решение - проверить, что ваш IdP и поставщик услуг могут использовать один и тот же NTP-сервер, или доказать, что часы вашего сервера актуальны.

Несоответствие Metadata.xml

Обновление данных и модернизация могут привести к тому, что сертификаты перестанут доверять одной стороне процесса федерации или другой. Попробуйте проверить и обновить metadata.xml с обеих сторон, чтобы сертификаты снова совпадали.

Сообщение SAML неправильно отформатировано, содержит недостающие или недопустимые элементы

https://stackoverflow.com/questions/64158310/aws-sso-your-request-included-an-invalid-saml-response

Иногда ошибка возникает не только с атрибутом User, но и в целом, если сообщение должно содержать всю необходимую информацию в требуемом формате. Например:

  • Сообщение было подписано, но подпись не может быть проверена.
  • Утверждение содержит неприемлемое ограничение аудитории.
  • Утверждение больше не действительно, или срок действия сообщения истек, см. раздел Проблемы синхронизации времени между IdP и поставщиком услуг.
  • Ответ SAML содержит ошибку, указывающую на то, что поставщик облачных услуг получил сообщение SAML от IdP с кодом состояния ошибки.

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

Еще несколькими примерами возможных опечаток могут быть:

  • Не указание кодировки в начале XML: <?xml version="1.0" encoding="UTF-8"?>
  • Ошибка в получателе данных SubjectConfirmationData : установите его на "https://signin.aws.amazon.com/saml".Не включено заявление об аутентификации.

Как просмотреть ответ SAML для устранения неполадок

https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_saml.html

В этой статье есть несколько идей, которые помогут вам выявить точную причину проблемы. Тем не менее, я также хотел бы дать вам несколько основных советов по отладке полученного вами утверждения SAML, чтобы найти детали, которые могут указать вам на первопричину проблемы.

Google Chrome и Firefox

  • Нажмите F12, чтобы запустить консоль Developer Tools.
  • Выберите вкладку Сеть, а затем выберите пункт Сохранить журнал (Persist Log в Firefox).
  • Найдите сообщение SAML Post, затем просмотрите вкладку Payload в верхней части. Найдите элемент SAMLResponse, который содержит ответ в Base64-кодировке.
  • Скопируйте его.

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

Windows systems (PowerShell):

PS C:\>[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(“base64encodedtext”))

MacOS and Linux systems:

$echo “base64encodedtext” | base64 —decode

Кроме того, если атрибуты вашего поставщика идентификационных данных не зашифрованы, надстройка SAML Tracer для браузера Firefox или декодер SAML-сообщений Chrome могут просмотреть эти атрибуты.****.

Учебники

Чтобы помочь вам в дальнейшем, вот две статьи из нашего блога, где мы делимся некоторыми советами по настройке SAML с GSuite (обратите внимание, что концепции и свойства аналогичны другим IdP).

Выводы

В этой статье мы рассмотрели, как устранить очень неприятную ошибку федерации SAML: “Response did not contain a valid SAML assertion”.

Мы показали, что она может возникать, когда:

Ролевые атрибуты не установлены правильно в SAML-запросе - На стороне IdP.Имеет место десинхронизация времени между IdP и поставщиком услуг.Имеется несоответствие Metadata.xml между субъектами, поэтому сертификат не совпадает.В запросе есть опечатки или неверная структура SAML.

В общем, я всегда возвращаюсь к этой ссылке, когда мне нужно устранить неполадки в ответе SAML, поскольку проблема может заключаться в другой конфигурации в зависимости от используемого вами IdP.

Эта небольшая статья была полезна для всех вас, и до следующего раза, счастливых SAML утверждений, и до встречи в следующей статье! 😉.