ComponentSpace SAML - 在签名和发送之前增加 AuthnRequest XML
ComponentSpace SAML - Augment AuthnRequest XML before sign & send
我正在评估来自 ComponentSpace 与手动滚动的 SAML 库。我已经从头到尾阅读了文档。
到目前为止,事实证明它比手动编写请求节省更多时间,但我的 IDP 使用 samlp:Extensions
和 samlp:Issuer
元素上的附加属性。
如果有一种方法可以在签名和 'sending'.
之前访问和扩充生成的 XML 文档,那将会很方便
我们的 IDP 也使用这个库(显然),因为他们使用所有这些额外的 XML 节点,我认为有办法。就是看不到。
谢谢,卢克
我会在完成过程中进行更新。
ComponentSpace SAML 有一个低级别 API,您会发现一个 AuthnRequest
类型可用于构建您的请求。
该类型有一个 .Extensions
属性,它采用 Extensions
类型,其构造函数采用 XmlElement
.
至于 SPProviderID
元素,可以作为参数提供给 Issuer
类型的构造函数,然后可以通过 AuthnRequest.Issuer
[=26= 设置和应用].
卢克,关于你的评论,"It'd be convenient if there was a way to access and augment the generated XML document just prior to signing and 'sending'.",我们将对此进行调查。
我们建议尽可能使用 SAML 高级 API,因为这意味着需要在应用程序中编写的代码更少。此外,我们建议尽可能避免使用扩展。但是,有时您必须在典型用例之外做一些事情,这就需要恢复到低级别 API。我们将考虑将您建议的支持添加到高级 API。谢谢。
如果它对任何人有帮助,这是添加扩展的方法:
AuthnRequest authnRequest = new AuthnRequest();
var doc = new XmlDocument();
doc.LoadXml("<myCustomField>123</myCustomField>");
authnRequest.Extensions = new Extensions();
authnRequest.Extensions.Data = doc.ChildNodes;
我正在评估来自 ComponentSpace 与手动滚动的 SAML 库。我已经从头到尾阅读了文档。
到目前为止,事实证明它比手动编写请求节省更多时间,但我的 IDP 使用 samlp:Extensions
和 samlp:Issuer
元素上的附加属性。
如果有一种方法可以在签名和 'sending'.
之前访问和扩充生成的 XML 文档,那将会很方便我们的 IDP 也使用这个库(显然),因为他们使用所有这些额外的 XML 节点,我认为有办法。就是看不到。
谢谢,卢克
我会在完成过程中进行更新。
ComponentSpace SAML 有一个低级别 API,您会发现一个 AuthnRequest
类型可用于构建您的请求。
该类型有一个 .Extensions
属性,它采用 Extensions
类型,其构造函数采用 XmlElement
.
至于 SPProviderID
元素,可以作为参数提供给 Issuer
类型的构造函数,然后可以通过 AuthnRequest.Issuer
[=26= 设置和应用].
卢克,关于你的评论,"It'd be convenient if there was a way to access and augment the generated XML document just prior to signing and 'sending'.",我们将对此进行调查。
我们建议尽可能使用 SAML 高级 API,因为这意味着需要在应用程序中编写的代码更少。此外,我们建议尽可能避免使用扩展。但是,有时您必须在典型用例之外做一些事情,这就需要恢复到低级别 API。我们将考虑将您建议的支持添加到高级 API。谢谢。
如果它对任何人有帮助,这是添加扩展的方法:
AuthnRequest authnRequest = new AuthnRequest();
var doc = new XmlDocument();
doc.LoadXml("<myCustomField>123</myCustomField>");
authnRequest.Extensions = new Extensions();
authnRequest.Extensions.Data = doc.ChildNodes;