我使用混合流实现了一个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!
答案 0 :(得分:1)
您可以在身份验证cookie中存储任意令牌,该方法只返回具有给定名称的令牌。实际设置在登录过程中会发生的事情。简而言之,它来自客户端应用程序的身份验证cookie,通常会在使用IdSrv4登录时设置。
答案 1 :(得分:0)
客户端Web应用程序可以单独确认用户是否确实使用IdentityServer进行身份验证(用户访问您的webapp,webapp会将用户转发到IdentityServer进行身份验证)。 id_token通过浏览器cookie返回用户到您的webapp,基本上当您的webapp看到该ID令牌时,它会对IdentityServer进行独立检查,如果它代表有效的用户身份验证,您将获得访问令牌背部。您可以使用该访问令牌从userinfo端点获取用户声明。
完成上述所有操作后,您可以获取其中一项声明并将其用作应用程序角色/权限的密钥。