2016-05-04 14 views
0

Ich versuche, meinen eigenen oauth Authentifizierungsserver mit oauthAuthorizationServerProvider zu schreiben. Der Client fordert den Authentifizierungsserver für Token an. Wenn die Client-Anmeldeinformationen gültig sind, geben Sie einen Zugriffs-Token ein. jetzt sendet der Client das Token bei jeder Anfrage an den Ressourcenserver. Ich kann nicht verstehen, wie der Ressourcenserver das vom Authentifizierungsserver generierte Token validiert. kann jemand irgendein Beispielcode unter Verwendung oauthAuthorizationServerProvider geben.validiere Oauth Bearer Token in Resource Server

Unten ist die Implementierung, die ich versucht habe:

public class AuthorizationServerProvider : OAuthAuthorizationServerProvider 
{ 
    public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) 
    { 
     return Task.FromResult<object>(context.Validated()); 
    } 

    public override Task TokenEndpoint(OAuthTokenEndpointContext context) 
    { 
     foreach (KeyValuePair<string, string> property in context.Properties.Dictionary) 
     { 
      context.AdditionalResponseParameters.Add(property.Key, property.Value); 
     } 
     return Task.FromResult<object>(null); 
    } 

    public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context) 
    { 
     string path = @"e:\temp\MyTest.txt"; 
     File.WriteAllText(path, context.AccessToken); 
     return base.TokenEndpointResponse(context); 
    } 
} 


public void Configuration(IAppBuilder app) 
    { 
     ConfigureOAuth(app); 
    } 

    public void ConfigureOAuth(IAppBuilder app) 
    { 
     OAuthBearerOptions = new OAuthBearerAuthenticationOptions(); 

     OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() { 
      AllowInsecureHttp=true, 
      TokenEndpointPath= new PathString("/Token"), 
      AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(20), 
      Provider = new AuthorizationServerProvider(), 

     }; 
     app.UseOAuthAuthorizationServer(OAuthServerOptions); 
     app.UseOAuthBearerAuthentication(OAuthBearerOptions); 
    } 

ich es postman mit testen Nun bin nicht in der Lage. kann jemand mir helfen, wenn meine Implementierung für client_credentials Berechtigung korrekt ist.

S.S: Ich möchte TokenEndpointResponse Methode debuggen und auch Klassen in startup. Wie kann ich das machen?

+0

mein vollständiger Code ist https://github.com/koushiksaha89/oauthserver – user3132179

Antwort

0

Das Token enthält das vom Autorisierungsserver generierte Authentifizierungsticket. Der Ressourcenserver extrahiert das Ticket aus dem Token und prüft, ob es gültig ist. Diese Aufgaben werden von der Microsoft.Owin.Security.OAuth DLL ausgeführt.

Sowohl Autorisierungs- als auch Ressourcenserver müssen denselben Computerschlüssel verwenden, der zum Verschlüsseln des Authentifizierungstickets im Token und Entschlüsseln des Tokens zum Abrufen des Tickets verwendet wird. Sie können es in den web.config beiden Websites enthalten (Server):

<system.web> 
    ... 
    <machineKey validationKey="BDE1234FBD71982481D87D815FA0A65B9F5982D123FA96E5672B78ABCD52D58818B479B19FF6D95263E85B0209297E68ABBA7D1E0BD3EABCD5E35742DEA5F2A7" 
     decryptionKey="8E8496D7342EA25ABCDEF6177E04EA00008E359C95E60CD0789456123B9ED2B3" 
     validation="SHA1" decryption="AES" /> 
    ... 
</system.web> 

TokenEndpointResponse ist die letzte Methode in den OAuthAuthorizationServerProvider ausgeführt und nur, wenn alle Validierungen in den anderen Verfahren korrekt sind, dann können Sie nicht, bis die debuggen Anbieter funktioniert ordnungsgemäß.

Ich gründete meine oauth Serverimplementierung im folgenden post durch Taiseer Joudeh, ich denke, dass Sie das Licht sehen können, das seine Erklärungen liest und den Code ansieht.

Ich hoffe, das hilft Ihnen.

Verwandte Themen