我正在使用OWIN中间件研究使用OAuth 2.0的ASP.NET WebAPI 2上的身份验证,并且我对在VS模板上与令牌响应一起发送的一些其他属性存在疑问。
基本上在ApplicationOAuthProvider
课程中我们找到了这两种方法:
public override Task TokenEndpoint(OAuthTokenEndpointContext context)
{
foreach (KeyValuePair<string, string> property in context.Properties.Dictionary)
{
context.AdditionalResponseParameters.Add(property.Key, property.Value);
}
return Task.FromResult<object>(null);
}
public static AuthenticationProperties CreateProperties(string userName)
{
IDictionary<string, string> data = new Dictionary<string, string>
{
{ "userName", userName }
};
return new AuthenticationProperties(data);
}
第一个,选择在context.Properties
上找到的数据并添加到响应中,第二个将一个属性userName
添加到创建AuthenticationProperties
对象的响应中。然后,此对象用于创建AuthenticationTicket
,并且响应不仅包含令牌,还包含其他属性。
我的怀疑是:首先,context.Properties
上找到的那些属性是什么?为什么我们打扰与令牌一起发送呢?其次,这AuthenticationProperties
类型的用途是什么,为什么我们只使用userName
发送它?这种类型可以用于什么?
我对这些额外的属性感到困惑,因为我认为从服务器获取的唯一重要的是令牌。是否有更深层次的理由发送这些属性?或者我们只是发送它们为前端提供额外的数据,比如提供用户名,以便客户端可以在某个地方显示它?