在没有Web请求的情况下从网站的授权部分检索access_token

时间:2017-12-20 14:05:43

标签: c# asp.net-identity identityserver4

我的网站由多个部分组成(API,IdSrv,MVC等)。

IdSvr站点处理授权并发出访问权限和ID令牌并处理用户管理。 API站点存储与用户无关的信息(因此不存储在IdSvr站点上)。

IdSvr站点显示从API(和其他站点)提取的用户信息。为此,我需要通过访问令牌授权用户使用API​​。要检索该访问令牌,IdSvr站点需要针对IdSrv站点发出http请求,然后使用令牌调用API站点以获取实际数据。 这对我来说似乎很奇怪,我正在寻找一种获取访问令牌的方法,而不需要IdSvr站点对自己提出请求。

我已经尝试了var accessToken = await HttpContext.GetTokenAsync("access_token");,因为它显示在Identity Server示例中,但是这会返回一个空的访问令牌。

日志并不多见,除了:

  

[15:22:28信息] Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler   AuthenticationScheme:Identity.Application已成功通过身份验证。

1 个答案:

答案 0 :(得分:0)

好的,在评论中提供的澄清后更新了答案。

我认为您发现这个棘手的原因是您要求您的ID服务器返回与身份验证无关的详细信息。从您的客户端看来,这应该是两个电话:

  1. 对ID服务器进行授权。

  2. 使用该访问令牌,从该站点而不是ID服务器请求用户详细信息(特定于我尝试访问的站点)。