2014-05-01 13 views
6

Ora sto lavorando con l'autorizzazione con OAUTH2.0. Voglio fare il mio server di autorizzazione (WEB API). Ho un progetto fittizio MVC per testare questo. Sono riuscito a creare un token di accesso nel server (WEB API) utilizzando "SimpleAuthorizationServerProvider". Devo chiamare alcune chiamate API ma dovrebbe essere autorizzato. così posso inviare questa chiamata con il mio token come.Convalida access_token dell'autorizzazione API Web

https://localhost/Profile?access_token=... 

o può inviare access_token tramite intestazione. Questo va bene ora dalla mia parte. Ma ho bisogno di convalidare questo access_token nel lato server. Posso ottenere il token di accesso dal client (progetto Dummy MVC).

private static TokenResponse GetToken() 
    { 
      var client = new OAuth2Client(new Uri("http://localhost:2727/token"),"client1", "secret"); 
      var response = client.RequestResourceOwnerPasswordAsync("bob", "bob").Result; 
      return response; 
    } 

Ma non è possibile capire da dove è stato creato dal lato server. E dove possiamo Convalidare access_token sul lato server (Web API). Ho letto molto ma ancora molto confuso. Per favore aiutatemi. Grazie !!

+0

Qualche fortuna? Sto vivendo lo stesso problema. – Stefan

+0

Che problema stai vivendo, Stefan, non è chiaro quale sia la modalità di errore che stai riscontrando. –

risposta

8

Non è necessario preoccuparsi del token di accesso sul lato server. Il token di accesso sul lato server viene analizzato e convalidato dal middleware Katana. Se hai bisogno di maggiori dettagli su come creare/utilizzare il token di accesso, cerca i metodi DeserializeTicket e SerializeTicket in Katana sources, troverai che questi metodi sono usati insieme a Token per serializzare/deserializzare ClaimsIdentity che hai passato sul lato client (DummyMVC) .

Ad ogni modo si sta utilizzando SimpleAuthorizationServerProvider dal progetto Thinktecture di Embedded AuthorizationServer che è wrapper attorno a OAuthAuthorizationServerProvider. Ho ragione? Credo che tu voglia convalidare le credenziali. Nel tuo caso puoi sovrascrivere GrantResourceOwnerCredentials.

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) 
    { 
     // validate user credentials (demo!) 
     // user credentials should be stored securely (salted, iterated, hashed yada) 
     if (context.UserName != context.Password) 
     { 
      context.Rejected(); 
      return; 
     } 
     context.Validated(); 
    } 

Il meglio sarà se si guarda a Thinktecture examples.

+0

Grazie .. ma così tanto che ho già fatto. Devo andare al passaggio successivo. Controlla la validità del token di accesso sul lato server (ho bisogno di personalizzare quella parte). –

+0

Quale personalizzazione hai in mente? –