我无法获取当前用户的access_token。 这是我的设置:
在QuickstartIdentityServer(QIS)站点(用户详细信息页面)的一部分中,我想使用access_token调用API端点来验证请求。我正在努力从我的QIS网站检索当前用户的access_token。每当我调用HttpContext.GetTokenAsync("access_token")
时,我都会得到一个空值。我已经看到了IdSrv4文档的这一部分:https://identityserver4.readthedocs.io/en/release/quickstarts/5_hybrid_and_api_access.html?highlight=gettokenasync但它似乎适用于MVC客户端而不是我自己的身份服务器。
任何人都可以了解如何获取用户的access_token?
由于
修改
以下是尝试更好地解释我的问题的起点: https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts/6_AspNetIdentity/src/IdentityServerWithAspNetIdentity
从这个QIS项目开始,我想获得登录用户的访问令牌。例如,如果我编辑HomeController
来添加此调用:
public async Task<IActionResult> Index()
{
var accessToken = await HttpContext.GetTokenAsync("access_token");
return View(accessToken);
}
然后,我可以在Auth Header中使用此令牌调用我的NodeJS API。
希望这能更好地解释我的问题。
答案 0 :(得分:0)
因此,我设法使用客户端凭据授权使用专用客户端验证我自己的API,然后调用以获取access_token:
var disco = await DiscoveryClient.GetAsync("http://localhost:5000");
var tokenClient = new TokenClient(disco.TokenEndpoint, clientId, clientSecret);
var tokenResponse = await tokenClient.RequestClientCredentialsAsync(scope);
然后我可以在tokenResponse
中返回我的请求标头API中返回的access_token:
using(var client = new HttpClient()) {
client.SetBearerToken(tokenResponse.AccessToken);
...
// execute request
}
缺点是我无法“模仿”当前在API端登录的IS当前。