是否可以从IExtensionGrantValidator
或ICustomTokenRequestValidator
实现获取生成的访问令牌,或者我必须实现另一个验证器?我无法找到可以获取访问令牌的任何属性。
答案 0 :(得分:0)
好吧,在最初从IdentityServer检索它的上下文中,令牌位于返回的AccessToken
实例的TokenResponse
属性中。
从通过IdentityServer进行身份验证的ASP.NET Core应用程序中,它来自IdentityServer的事实是无关紧要的。通常,要检索访问令牌,您可以使用:
using Microsoft.AspNetCore.Authentication;
...
var token = await HttpContext.GetTokenAsync("access_token");
答案 1 :(得分:0)
这是一种变通方法,具体取决于:IdentityServer4.AccessToken验证2.7 + IdentityModel 3.10
services.AddScoped(provider =>
{
var httpService = provider.GetService<IHttpContextAccessor>();
var token = httpService.HttpContext.Request.Headers["Authorization"][0].Remove(0, "Bearer ".Length);
var userGuid = Guid.Parse(httpService.HttpContext.User.FindFirst("sub").Value);
// Use token
});