有人可以解释HttpContext.Authentication.GetTokenAsync(“access_token”)

时间:2017-08-17 22:21:10

标签: identityserver4

我使用混合流实现了一个ASP.NET核心MVC客户端,我想知道HttpContext.Authentication.GetTokenAsync(“access_token”)做了什么。

如果您在我的问题上需要更多背景信息:

使用ASP.Net核心客户端应用程序控制器操作访问API的说明通常如下:

var accessToken = await HttpContext.Authentication.GetTokenAsync("access_token");
var client = new HttpClient();
client.SetBearerToken(accessToken);
var response = await client.GetAsync("http://localhost:5001/api/stuff");

httpContext.Authentication.GetTokenAsync(“access_token”)中有魔力: - )

我想知道这个功能可能在做什么。它是否从MVC App域中的cookie解密访问令牌? ......来自ID4域名?

很抱歉,我无法找到足够的文档来说明这是做什么的,或者找到了访问令牌可能存在的cookie。我看过这里: https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.aspnetcore.authentication.authenticationtokenextensions

有谁知道它的作用?链接到更全面的文档是一个完全赞赏的答案。

TU!

2 个答案:

答案 0 :(得分:1)

您可以在身份验证cookie中存储任意令牌,该方法只返回具有给定名称的令牌。实际设置在登录过程中会发生的事情。简而言之,它来自客户端应用程序的身份验证cookie,通常会在使用IdSrv4登录时设置。

答案 1 :(得分:0)

客户端Web应用程序可以单独确认用户是否确实使用IdentityServer进行身份验证(用户访问您的webapp,webapp会将用户转发到IdentityServer进行身份验证)。 id_token通过浏览器cookie返回用户到您的webapp,基本上当您的webapp看到该ID令牌时,它会对IdentityServer进行独立检查,如果它代表有效的用户身份验证,您将获得访问令牌背部。您可以使用该访问令牌从userinfo端点获取用户声明。

完成上述所有操作后,您可以获取其中一项声明并将其用作应用程序角色/权限的密钥。