2016-07-29 19 views
0

Ich bin mit der OAuth-Token-Autorisierung beschäftigt. Ich habe OAuth konfiguriert und ich habe meinen eigenen OAuth-Server-Provider.Bestätigung des OAuth-Bearer-Tokens durch Autorize-Attribut

Konfigurationscode:

OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() 
    { 
     AllowInsecureHttp = true, 
     TokenEndpointPath = new PathString("/token"), 
     AuthorizeEndpointPath = new PathString("/authorize"), 
     AccessTokenExpireTimeSpan = TimeSpan.FromHours(1), 
     Provider = new SimpleAuthorizationServerProvider() 
    }; 

    app.UseOAuthAuthorizationServer(OAuthServerOptions); 
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 

Server-Anbieter:

public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider 
    { 
     public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) 
     { 
      context.Validated(); 
     } 

     public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) 
     { 

      context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); 

      using (AuthRepository _repo = new AuthRepository()) 
      { 
       IdentityUser user = await _repo.FindUser(context.UserName, context.Password); 

       if (user == null) 
       { 
        context.SetError("invalid_grant", "The user name or password is incorrect."); 
        return; 
       } 
      } 

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

      context.Validated(identity);    
     } 
    } 

Wenn ich schicke: grand_type=password, username=MyUserName, password=MyPassword zum OAuth-Token-Endpunkt "localhost/token", ist es schön meinen OAuth Inhaber Token zu schaffen. Aber von hier habe ich keine Ahnung, wie man dieses generierte Token verwendet, wo es gespeichert wird (wie man es bekommt) und wie man eine Erfolgsvalidierung unter Verwendung des [Authorize] Attributs auf dem ASP.NET MVC Controller durchführt. Ich möchte einfach nur mein generiertes Token verwenden, wenn ich von einer Ansicht zur nächsten gehe, die das Attribut [Authorize] hat, und es erfolgreich durchlaufen. Wie kann ich das erreichen?

+0

Sie ein Cookie des Aktualisierungs-Token erstellen können, die Sie erzeugt, kann dies über mehrere Ansichten zugegriffen wird, vergessen Sie nicht Ihre Zugriffstoken gültig für 1 Nur Stunden, müssen Sie jede Stunde ein neues Zugriffs-Token generieren – SoftwareNerd

Antwort