使用GetTokenAsync和自定义身份验证

时间:2019-10-10 15:46:11

标签: asp.net asp.net-mvc asp.net-core

我当前正在使用自定义身份验证系统,并且在我的一个控制器中,我想使用HttpContext.GetTokenAsync来检索我的令牌。

我想这样使用它: HttpContext.GetTokenAsync(MyOAuthAuthenticationDefaults.AuthenticationScheme, "access_token")

我在身份验证系统中的哪里将令牌值分配给"access_token"以便能够像这样检索它?

它是否从自定义声明中返回?

谢谢

1 个答案:

答案 0 :(得分:0)

该令牌将保存到Cookie中的AuthenticationProperties

var claims = new List<Claim>
{
    new Claim(ClaimTypes.Name, "xxxx"),
    new Claim("FullName", "xxxxx"),
    new Claim(ClaimTypes.Role, "Administrator"),
};

var claimsIdentity = new ClaimsIdentity(
    claims, CookieAuthenticationDefaults.AuthenticationScheme);
var tokens = new List<AuthenticationToken>
{
    new AuthenticationToken {Name = OpenIdConnectParameterNames.AccessToken, Value = "xxxxxxxxxxxxxxx"},
    new AuthenticationToken {Name = OpenIdConnectParameterNames.RefreshToken, Value = "xxxxxxxxxxxxxxxxxx"}
};
var authProperties = new AuthenticationProperties();
authProperties.StoreTokens(tokens);



await HttpContext.SignInAsync(
    CookieAuthenticationDefaults.AuthenticationScheme,
    new ClaimsPrincipal(claimsIdentity),
    authProperties);

并通过:

var access_token =await HttpContext.GetTokenAsync(CookieAuthenticationDefaults.AuthenticationScheme, "access_token");