public virtual async Task CreateAsync(AuthenticationTokenCreateContext context) { var clientId = context.Ticket.Properties.Dictionary["as:client_id"]; if (string.IsNullOrEmpty(clientId)) return; var refreshTokenId = Guid.NewGuid().ToString("n"); await Task.Run(() => { var refreshTokenLifeTime = context.OwinContext.Get<string>("as:clientRefreshTokenLifeTime"); var token = new OAuthRefreshToken() { Key = refreshTokenId.GenerateHash(), ClientId = clientId, Subject = context.Ticket.Identity.Name, UserType = UserType.Name, IssuedUtc = DateTime.UtcNow, ExpiresUtc = DateTime.UtcNow.AddMinutes(Convert.ToDouble(refreshTokenLifeTime)) }; context.Ticket.Properties.IssuedUtc = token.IssuedUtc; context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc; token.ProtectedTicket = context.SerializeTicket(); this._oauthStore.AddRefreshToken(token); }); context.SetToken(refreshTokenId); }
public void AddRefreshToken(OAuthRefreshToken token) { this.Db.Execute("DELETE FROM [OAuthRefreshToken] WHERE [Subject] = @0 AND [ClientId] = @1 AND [UserType] = @3", token.Subject, token.ClientId, token.UserType); this.Db.Save(token); }