HttpWebRequest - 添加数据

时间:2011-03-15 14:59:08

标签: c# httpwebrequest saml

我正在构建HttpWebRequest以请求包含SAMLResponse的响应以获取用户名 响应将由Httpmodule获取 构建我的AuthRequest(如下所示)后,xml被清除,base64编码然后进行url编码。

<samlp:AuthnRequest xmlns:samlp=urn:oasis:names:tc:SAML:2.0:protocol xmlns:saml=urn:oasis:names:tc:SAML:2.0:assertion ProtocolBinding=urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST  Version= version ID= iD 
IssueInstant=DateTime.Now.ToString() Destination= destination />

<saml:Issuer> issuer /saml:Issuer>

<samlp:NameIDPolicy AllowCreate=true Format=urn:oasis:names:tc:SAML:2.0:nameid-format:transient/>    
</samlp:AuthnRequest>

requestStream.Write(postBytes, 0, postBytes.Length)的postBytes由byte[]

创建的字符串中的"SAMLRequest=" + SAMLRequest组成

希望我还没有失去你。
我的问题是:SAMLRequest的值是否需要放在一个表单中,还是可以是编码的xml?是什么决定了这个决定?

提前致谢!

1 个答案:

答案 0 :(得分:0)

根据saml.xml.org:发给IdP的发布请求具有以下内容:

POST /SAML2/SSO/POST HTTP/1.1
Host: idp.example.org
Content-Type: application/x-www-form-urlencoded
Content-Length: nnn
SAMLRequest=request&RelayState=token

您当然可以assemble a HttpWebRequest in C# code使用此表单内容,以避免与嵌套表单相关的问题。

saml.xml.org链接指定“ SAMLRequest参数的值是 <samlp:AuthnRequest> 元素编码”

如果您有可用的IdP(如OpenSSO),您应该能够测试并查看哪些有效。

我假设您正在尝试实施下图中的第3步。

免责声明:我自己没有尝试过,所以请提供一些反馈,说明这个答案是否有用。 enter image description here