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 высокого уровня. Благодарю.