Weitere Informationen mit OAuth Bearer Tokens Generation und Owin in WebApi an den Client zurückgeben

Ich habe ein WebApi und eine Cordova-Anwendung erstellt. Ich verwende HTTP-Anforderungen, um zwischen der Cordova-Anwendung und der WebAPI zu kommunizieren. In der WebAPI habe ich OAuth Bearer Token Generation implementiert.

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());

    }

und das ist in derSimpleAuthorizationServerProvider Implementierun

 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);
    }

Nach einer erfolgreichen Anmeldeanforderung der Cordova-App an die API erhalte ich den folgenden JSON

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

Das Problem ist, dass ich mehr Informationen über den Benutzer benötige. Ich habe beispielsweise ein UserGuid-Feld in der Datenbank und möchte es bei erfolgreicher Anmeldung an die Cordova-App senden und später bei anderen Anforderungen verwenden. Kann ich andere Informationen als @ angeben, um sie an den Client zurückzugebe"access_token", "token_type" und"expires_in"? Wenn nicht, wie kann ich den Benutzer anhand des @ in die API einbindeaccess_token?

BEARBEITEN

Ich denke, dass ich eine Problemumgehung gefunden habe. Ich habe den folgenden Code in @ eingefüGrantResourceOwnerCredentials

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

und danach greife ich wie folgt auf die GUID in meinem Controller zu:User.Identity.Name

Ich kann auch die guid mit einem benutzerdefinierten Namen hinzufügenidentity.AddClaim(new Claim("guid", user.UserGuid.ToString()));

Ich bin immer noch daran interessiert zu wissen, ob es eine Möglichkeit gibt, mit dem Inhaber-Token JSON weitere Daten an den Client zurückzugeben.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage