Wie aktualisiert Owin access-Token mit refresh-Token ohne neue refresh-token?

Habe ich es geschafft, ein einfaches Beispiel-code erstellen kann, eine Inhaber-token und fordern auch neue aktualisieren von token durch das Lesen anderer Foren hier auf stackoverflow.

Die startup-Klasse sieht wie folgt aus

public class Startup
{
    public static void Configuration(IAppBuilder app)
    {
        app.UseOAuthBearerAuthentication(
                      new OAuthBearerAuthenticationOptions());

        app.UseOAuthAuthorizationServer(
                      new OAuthAuthorizationServerOptions
                      {
                          TokenEndpointPath = new PathString("/Token"),
                          Provider = new OAuthAuthorizationServerProvider()
                          {
                              OnValidateClientAuthentication = async c =>
                              {
                                  c.Validated();
                              },
                              OnGrantResourceOwnerCredentials = async c =>
                              {
                                  if (c.UserName == "alice" && c.Password == "supersecret")
                                  {
                                      Claim claim1 = new Claim(ClaimTypes.Name, c.UserName);
                                      Claim[] claims = new Claim[] { claim1 };
                                      ClaimsIdentity claimsIdentity =
                                          new ClaimsIdentity(
                                             claims, OAuthDefaults.AuthenticationType);
                                      c.Validated(claimsIdentity);
                                  }
                              }
                          },
                          AccessTokenExpireTimeSpan = TimeSpan.FromSeconds(40),
                          AllowInsecureHttp = true,
                          RefreshTokenProvider = new ApplicationRefreshTokenProvider()
                      });
    }
}

Und ich habe auch eine Klasse für refresh-Token, der wie folgt aussieht:

public class ApplicationRefreshTokenProvider : AuthenticationTokenProvider
{
    public override void Create(AuthenticationTokenCreateContext context)
    {
        //Expiration time in seconds
        int expire = 2 * 60;
        context.Ticket.Properties.ExpiresUtc = new DateTimeOffset(DateTime.Now.AddSeconds(expire));
        context.SetToken(context.SerializeTicket());
    }

    public override void Receive(AuthenticationTokenReceiveContext context)
    {
        context.DeserializeTicket(context.Token);
    }
}

Ich verstehe es so, dass durch die Bereitstellung einer refresh token sollten Sie ein neues access token. Aber was happends in diesem code ist, dass wenn ich eine refresh token eine neue refresh token erstellt und zurückgegeben wird aswell. Ich will es schaffen sowohl eine Zugang und refresh token das erste mal als username/Kennwort zur Verfügung gestellt, aber es scheint nicht richtig zu erstellen, neue refresh Token jedesmal, wenn eine Anforderung für einen neuen access token mit refresh token?

Wenn ich zum Beispiel mit meinem code, habe einen 20 min Zeitspanne auf der access token und zwei Wochen auf der refresh Token, neue access Token konnten erstellt werden, alle 20 min, die ist gut, aber neue refresh Token würden auch alle 20 min, aber die letzten 2 Wochen. Viel refresh Token wäre dann erstellt, aber nicht verwendet.

Frage:

Habe ich nur angefangen zu Lesen/lernen über diese vor ein paar Stunden so bin ich ziemlich unsicher, aber ist dieses Verhalten korrekt oder soll ich cange mein code in einer Weise, nur erstellen, und geben Sie einen neuen access token wenn ein refresh token vorgesehen ist und nicht erstellen und geben Sie einen neuen refresh token auch? Jede Hilfe oder input wird sehr geschätzt, Dank!

Ein refresh token ersetzt Ihre Berechtigung, also im Grunde erste mal, wenn Sie Ihre Anmeldeinformationen zu authentifizieren, dann verwenden Sie die refresh-token jedes mal, wenn Sie brauchen, um sich erneut authentifizieren. Als Ergebnis der Authentifizierung erhalten Sie wieder einen auth-token enthalten, Identität und Ansprüche. Hoffe das verdeutlicht das Konzept.

InformationsquelleAutor mattias | 2016-03-02

Schreibe einen Kommentar