Retorne mais informações ao cliente usando o OAuth Bearer Tokens Generation e Owin no WebApi

Eu criei um aplicativo WebApi e um Cordova. Estou usando solicitações HTTP para se comunicar entre o aplicativo Cordova e a WebAPI. Na WebAPI, implementei a geração de token de portador OAuth.

public void ConfigureOAuth(IAppBuilder app)
    {
        var oAuthServerOptions = new OAuthAuthorizationServerOptions
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new SimpleAuthorizationServerProvider(new UserService(new Repository<User>(new RabbitApiObjectContext()), new EncryptionService()))
        };

        // Token Generation
        app.UseOAuthAuthorizationServer(oAuthServerOptions);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

    }

e isso é dentro doSimpleAuthorizationServerProvider implementação

 public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
       context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

        // A little hack. context.UserName contains the email
        var user = await _userService.GetUserByEmailAndPassword(context.UserName, context.Password);

        if (user == null)
        {
            context.SetError("invalid_grant", "Wrong email or password.");
            return;
        }

        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim("sub", context.UserName));
        identity.AddClaim(new Claim("role", "user"));

        context.Validated(identity);
    }

depois de uma solicitação de login bem-sucedida à API do aplicativo Cordova, recebo o seguinte JSON

{"access_token":"some token","token_type":"bearer","expires_in":86399}

O problema é que eu preciso de mais informações sobre o usuário. Por exemplo, eu tenho um campo UserGuid no banco de dados e desejo enviá-lo para o aplicativo Cordova quando o logon for bem-sucedido e usá-lo posteriormente em outras solicitações. Posso incluir outras informações para retornar ao cliente, exceto"access_token", "token_type" e"expires_in"? Caso contrário, como posso obter o usuário na API com base noaccess_token?

EDITAR:

Eu acho que encontrei uma solução alternativa. Eu adicionei o seguinte código dentroGrantResourceOwnerCredentials

identity.AddClaim(new Claim(ClaimTypes.Name, user.UserGuid.ToString()));

e depois disso, eu acesso o GUID dentro do meu controlador assim:User.Identity.Name

Também posso adicionar o guid com um nome personalizadoidentity.AddClaim(new Claim("guid", user.UserGuid.ToString()));

Ainda estou interessado em saber se existe uma maneira de retornar mais dados ao cliente com o JSON do token de portador.

questionAnswers(2)

yourAnswerToTheQuestion