我正在评估来自 ComponentSpace 与手动滚动的 SAML 库。我已经从头到尾阅读了这些文档。
到目前为止,事实证明它比手动编写请求节省了更多时间,但我的 IDP 使用了元素samlp:Extensions
上的一个附加属性。samlp:Issuer
如果有一种方法可以在签名和“发送”之前访问和扩充生成的 XML 文档,那将会很方便。
我们的 IDP 也使用这个库(显然),因为他们使用所有这些额外的 XML 节点,我认为有一种方法。就是看不出来。
谢谢,卢克
我正在评估来自 ComponentSpace 与手动滚动的 SAML 库。我已经从头到尾阅读了这些文档。
到目前为止,事实证明它比手动编写请求节省了更多时间,但我的 IDP 使用了元素samlp:Extensions
上的一个附加属性。samlp:Issuer
如果有一种方法可以在签名和“发送”之前访问和扩充生成的 XML 文档,那将会很方便。
我们的 IDP 也使用这个库(显然),因为他们使用所有这些额外的 XML 节点,我认为有一种方法。就是看不出来。
谢谢,卢克
如果它可以帮助任何人,这是添加扩展的方法:
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
属性设置和应用。
Luke,关于您的评论,“如果有一种方法可以在签名和'发送'之前访问和扩充生成的 XML 文档,那将会很方便。”,这是我们将要研究的内容。
我们建议尽可能使用 SAML 高级 API,因为这意味着必须在应用程序中编写更少的代码。此外,我们建议尽可能避免使用扩展。但是,有时您必须在典型用例之外做一些事情,这需要恢复到低级 API。我们将考虑将您建议的支持添加到高级 API。谢谢。