Подписание AuthenRequest SAML

Я пытаюсь подписать свою привязку HTTP-Redirect AuthenRequest, чтобы я мог отправить ее в Idp. Какова логика подписания запроса? Я подписываю это, используя мой x509 и закрытый ключ? Должен ли я подписать его с помощью своего закрытого ключа и сертификата Idp x509? Кроме того, Idp требует параметр запроса подписи. Должен ли я просто извлечь значение подписи из запроса после его подписания?

Я занимаюсь разработкой в ​​C# .net

Спасибо

2 ответа

Решение

Лучшее и простое решение для получения правильного значения Signature в публикации HTTP-Redirect - использовать стороннюю библиотеку для C# под названием ComponentPro. Вот что я использовал, чтобы заставить его работать:

NameValueCollection queryString = RedirectUtil.CreateQueryString("SAMLRequest", authnRequest.GetXml(), relayState, key, signatureAlgorithm);

Ключ является закрытым ключом.

Вы всегда подписываете свой личный ключ. Получатель проверит подпись, используя ваш открытый ключ.

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

Обычно вы предоставляете провайдеру идентификации свой открытый ключ в виде файла сертификата или как часть метаданных SAML.

Если IdP требует подпись как часть строки запроса, это означает, что они хотят, чтобы вы использовали привязку HTTP-Redirect для отправки запроса authn. Вам нужно взглянуть на спецификацию привязок SAML v2.0, чтобы понять, как это реализовать. Подпись не является частью запроса и, следовательно, не извлекается из него.

Другие вопросы по тегам