Я пытаюсь передать некоторые параметры из ASP.NET Web API после входа пользователя.
Я основываю свою работу на этом хорошем учебнике: http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/
На демонстрационной странице можно увидеть, что он отправляет обратно имя пользователя, например.
Я создаю своего собственного провайдера, который наследует от OAuthAuthorizationServerProvider И это то, что я делаю:
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
....
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
identity.AddClaim(new Claim("role", user.Role));
var props = new AuthenticationProperties(new Dictionary<string, string>
{
{
"userName", user.UserName
},
{
"role", user.Role
}
});
var ticket = new AuthenticationTicket(identity, props);
context.Validated(ticket);
}
Вот как я его подключаю:
var OAuthBearerOptions = new OAuthBearerAuthenticationOptions();
var OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
Как я понимаю, словарь AuthenticationProperties должен быть возвращен в ответ JSON клиенту. Но по какой-то причине я не возвращаю свои дополнительные параметры. Это то, что я получаю:
{ "access_token": "G4S1PXdNbtAHLFBo......", "token_type": "носителем", "expires_in": 86399}
Я потратил много времени, пытаясь понять это, может ли кто-нибудь увидеть, что мне не хватает?