Подписание 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, чтобы понять, как это реализовать. Подпись не является частью запроса и, следовательно, не извлекается из него.