我有一个使用WSFederation进行用户身份验证的ASP.NET Web应用程序。我想模仿用户并通过委托从我的Web服务器向另一个Web服务器发出webrequest。另一台服务器也进行WSFederation。
最终,我只需要来自其他网络服务器的单个页面。我需要从HTTP响应标头中获得一些标头信息。示例代码如下。
我一直在遵循这些步骤,但这适用于Webserver - > WCF,而不是Webserver - >网络服务器。
根据那篇文章,我在web.config中得到了以下内容:
<system.identityModel>
<identityConfiguration saveBootstrapContext="true">
以下是我运行的一些示例代码,用于向第二个webapp发出Web请求。它是一个简单的POST,我需要从Response头读取一些数据。
try
{
var claimsPrincipal = ClaimsPrincipal.Current;
if (claimsPrincipal.Identities.First().BootstrapContext == null)
{
throw new Exception("No bootstrap context found");
}
WebRequest request = WebRequest.Create("https://destServer/sap/bc/gui/sap/its/webgui/?sap-client=555&sap-language=en");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseBody = new StreamReader(response.GetResponseStream()).ReadToEnd();
var responseHeaders = "";
for (int i = 0; i < response.Headers.Count; ++i)
{
responseHeaders += response.Headers.Keys[i] + ": " + response.Headers[i] + " <br/>";
}
ViewBag.responseHeader = responseHeaders;
ViewBag.responseBody = responseBody;
}
catch (Exception e)
{
ViewBag.responseHeader = "FAILED";
ViewBag.responseBody = e.Message;
}
我不确定如何在请求中添加适当的SAML令牌。现在,这会导致对STS的重定向响应。我知道我需要与STS管理员合作才能获得正确的令牌,但假设我已经有了这个,那么如何使用这些SAML令牌发送(或获取)到另一个网站?