【发布时间】:2020-11-30 20:43:43
【问题描述】:
TL;DR
我需要在客户端应用程序和 webapi 之间创建一个代理,例如
客户端应用 代理 webapi(由oauth2保护)
代理应该只是将访问令牌转发给 webapi,还是请求新的访问令牌?
详细
目前,有一个客户端应用程序和一个 webapi。要访问 webapi,客户端应用需要提供访问令牌。
即客户端 webapi(由 oauth2 保护)
一切都按预期进行。
但是,出于某种原因,有一个新要求是在客户端和 webapi 之间使用 asp.net 核心创建代理服务器。
即客户端 代理 webapi
代理代码如下:
[Route("api/[controller]")]
[ApiController]
public class ProxyController : ControllerBase
{
[Authorize]
[HttpGet]
public async Task<ActionResult<object>> Invoke()
{
using (HttpClient client = new HttpClient())
{
//GET ACCESS TOKEN FROM CURRENT REQUEST
var accessToken = await HttpContext.GetTokenAsync("access_token"); ;
client.SetBearerToken(accessToken);
var response = await client.GetAsync("https://demo.identityserver.io/api/test");
if (!response.IsSuccessStatusCode)
{
return response.StatusCode;
}
else
{
var content = await response.Content.ReadAsStringAsync();
return content;
}
}
}
}
如您所见,我只是使用当前的访问令牌,然后向真正的 api 发出请求。
为了安全起见,我不知道是否可以使用当前的访问令牌。我应该为代理请求一个新的访问令牌并向真正的 api 发出请求吗?
【问题讨论】:
-
你好,有什么结果吗?您是如何使用新版本的 ASP.NET 进行管理的?你有 github 有例子吗? :)
标签: asp.net-web-api proxy oauth-2.0 openid-connect