gpt4 book ai didi

c# - HttpClient 将 ClaimsIdentity 传递给另一个 WebApi

转载 作者:太空狗 更新时间:2023-10-29 20:41:28 26 4
gpt4 key购买 nike

我使用透明代理,是否可以将声明身份传递给另一个 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);
}

最佳答案

在您的第一个 API 从用户那里获取 Auth 时,您只需将该信息传递给进一步的请求。您可以传播所有 header ,或仅传播带有 bearer tokenAuthorization header (其中包含声明详细信息)。您可以将自定义数据添加到 header 并在第二个 API 端读取它们。

您可以注册从当前请求收集 header 并将它们存储到单例 DI 服务的中间件(可以命名为 HeadersPropagator)。当您创建 HttpClient 时,您可以从 HeadersPropagator 获取收集到的 header ,并将它们复制到您的第二个 API 中。

关于c# - HttpClient 将 ClaimsIdentity 传递给另一个 WebApi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33873891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com