无法在 Web api 2 身份验证中使用令牌访问其他数据
Unable to access additional data with token in Web api 2 authentication
我正在使用 Web Api 2 并实现了基于自定义令牌的身份验证。它工作正常,但我想获得一些额外的属性值作为响应。尽管我添加了新声明并添加了新属性以获取它们的响应值,但我仍然只获得三个响应值,即 'access_token'、"token_type" 和 "expires_in"。我怎样才能得到更多的价值作为回应。
这是我的代码:
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
if(context.UserName == "user" && context.Password=="user")
{
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
identity.AddClaim(new Claim(ClaimTypes.Role, "Administrators"));
identity.AddClaim(new Claim("MyClaim", "I don't know"));
var props = new AuthenticationProperties(new Dictionary<string, string>
{
{ "name", "John" },
{ "surname", "Smith" },
{ "age", "40" },
{ "gender", "Male" }
});
var ticket = new AuthenticationTicket(identity, props);
context.Validated(ticket);
}
else
{
context.SetError("Invalid_Grant", "Provided username and password is incorrect");
return;
}
}
这是我得到的输出
{
"access_token": "xxxxx",
"token_type": "bearer",
"expires_in": 86399
}
附加声明和属性不应作为附加字段出现在响应中,而是编码在 access_token 本身中。
如果您使用的是 JWT(JSON Web 令牌),您可以在 https://jwt.io/ 查看生成的令牌的内容
只需将您的令牌粘贴到左侧 window,然后在右侧查看包含您所有声明的解码令牌。
我正在使用 Web Api 2 并实现了基于自定义令牌的身份验证。它工作正常,但我想获得一些额外的属性值作为响应。尽管我添加了新声明并添加了新属性以获取它们的响应值,但我仍然只获得三个响应值,即 'access_token'、"token_type" 和 "expires_in"。我怎样才能得到更多的价值作为回应。 这是我的代码:
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
if(context.UserName == "user" && context.Password=="user")
{
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
identity.AddClaim(new Claim(ClaimTypes.Role, "Administrators"));
identity.AddClaim(new Claim("MyClaim", "I don't know"));
var props = new AuthenticationProperties(new Dictionary<string, string>
{
{ "name", "John" },
{ "surname", "Smith" },
{ "age", "40" },
{ "gender", "Male" }
});
var ticket = new AuthenticationTicket(identity, props);
context.Validated(ticket);
}
else
{
context.SetError("Invalid_Grant", "Provided username and password is incorrect");
return;
}
}
这是我得到的输出
{
"access_token": "xxxxx", "token_type": "bearer", "expires_in": 86399 }
附加声明和属性不应作为附加字段出现在响应中,而是编码在 access_token 本身中。 如果您使用的是 JWT(JSON Web 令牌),您可以在 https://jwt.io/ 查看生成的令牌的内容 只需将您的令牌粘贴到左侧 window,然后在右侧查看包含您所有声明的解码令牌。