【发布时间】:2015-11-23 14:49:11
【问题描述】:
我使用透明代理,是否可以将声明身份传递给另一个 WebAPI?
我有两个 WebAPI,演示和应用,都使用 ADFS 进行身份验证。
到目前为止,我的代码用于处理应用程序 WebAPI 的演示请求
//Obtain ClaimsIdentity (Contains claims)
ClaimsPrincipal icp = Thread.CurrentPrincipal as ClaimsPrincipal;
ClaimsIdentity claimsIdentity = (ClaimsIdentity)icp.Identity;
var baseAddress = ConfigurationManager.AppSettings["ApplicationalWebApiUrl"] + "/" + url;
var http = (HttpWebRequest)WebRequest.Create(new Uri(baseAddress));
http.Accept = "application/json; charset=utf-8";
http.ContentType = "application/json; charset=utf-8";
http.Method = "GET";
//Doesn't pass the ClaimsIdentity
http.UseDefaultCredentials = true;
try
{
//Get the requested data
var response = http.GetResponse();
var stream = response.GetResponseStream();
var sr = new StreamReader(stream);
var contentResponse = sr.ReadToEnd();
return Request.CreateResponse(JsonConvert.DeserializeObject<Object>(contentResponse));
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message);
}
【问题讨论】:
-
“传递”凭据到另一个 webapi 与“委托”身份模拟相同 - 所以您可能需要将“request.ImpersonationLevel”设置为“委托”
-
你找到解决办法了吗?
-
@HosseinNarimaniRad 不幸的是,没有。
-
如果您使用 OAuth,请查看bitoftech.net/2014/09/24/…
-
我自己意识到了这一点。最终使用访问令牌方法。
标签: c# asp.net-web-api asp.net-web-api2 httpclient adfs2.0