ComponentSpace SAML - Дополнение AuthnRequest XML перед подписью и отправкой

Я оцениваю библиотеку SAML из ComponentSpace против ручной прокатки. Я прочитал документы от корки до корки.

До сих пор доказано, что он экономит больше времени, чем написание запросов вручную, но мой IDP использует samlp:Extensions и дополнительный атрибут на samlp:Issuer элемент.

Было бы удобно, если бы был способ получить доступ к сгенерированному XML-документу и дополнить его непосредственно перед подписанием и "отправкой".

Наш IDP также использует эту библиотеку (очевидно), и поскольку они используют все эти дополнительные узлы XML, я предполагаю, что есть способ. Просто не вижу этого.

Спасибо Люк

3 ответа

Решение

В случае, если это кому-нибудь поможет, вот как добавить расширения:

AuthnRequest authnRequest = new AuthnRequest();
var doc = new XmlDocument();
doc.LoadXml("<myCustomField>123</myCustomField>");
authnRequest.Extensions = new Extensions();
authnRequest.Extensions.Data = doc.ChildNodes;

Я буду обновлять, как я работаю через это.

ComponentSpace SAML имеет низкоуровневый API, и вы найдете AuthnRequest тип, который может быть использован для создания вашего запроса.

Этот тип имеет .Extensions свойство, которое принимает Extensions тип которого конструктор принимает XmlElement,

Для SPProviderID элемент, который может быть предоставлен в качестве аргумента в конструктор Issuer тип, который затем может быть установлен и применен через AuthnRequest.Issuer имущество.

Люк, в отношении вашего комментария: "Было бы удобно, если бы был способ получить доступ и сгенерировать сгенерированный XML-документ непосредственно перед подписанием и" отправкой ".", Это то, что мы рассмотрим.

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

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