Bru*_*Pro 7 c# httpclient adfs2.0 asp.net-web-api asp.net-web-api2
我使用透明代理,是否可以将声明身份传递给另一个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);
}
Run Code Online (Sandbox Code Playgroud)
在第一次从用户那里API获取信息时Auth,您只需将该信息传递给进一步的请求。您可以传播所有标头,或仅Authorization传播标头bearer token(其中包含声明详细信息)。您可以将自定义数据添加到标题并在第二面读取它们API。
您可以注册中间件,该中间件从当前请求中收集标头并将其存储到单例 DI 服务(可以命名为HeadersPropagator)。当您创建一个时,HttpClient您可以从中获取收集的标头HeadersPropagator并将它们复制到请求到您的第二个API.
| 归档时间: |
|
| 查看次数: |
1473 次 |
| 最近记录: |