private async Task <bool> TryRevokeTokensAsync([NotNull] AuthenticationTicket ticket) { // Note: if the authorization identifier is null, return true as no tokens need to be revoked. var identifier = ticket.GetInternalAuthorizationId(); if (string.IsNullOrEmpty(identifier)) { return(true); } var result = true; foreach (var token in await _tokenManager.FindByAuthorizationIdAsync(identifier)) { // Don't change the status of the token used in the token request. if (string.Equals(ticket.GetInternalTokenId(), await _tokenManager.GetIdAsync(token), StringComparison.Ordinal)) { continue; } result &= await TryRevokeTokenAsync(token); } return(result); }
private async Task <bool> TryExtendRefreshTokenAsync( [NotNull] object token, [NotNull] AuthenticationTicket ticket, [NotNull] OpenIddictServerOptions options) { var identifier = ticket.GetInternalTokenId(); Debug.Assert(!string.IsNullOrEmpty(identifier), "The token identifier shouldn't be null or empty."); try { // Compute the new expiration date of the refresh token. var lifetime = ticket.GetRefreshTokenLifetime() ?? options.RefreshTokenLifetime; if (lifetime != null) { // Note: the request cancellation token is deliberately not used here to ensure the caller // cannot prevent this operation from being executed by resetting the TCP connection. var date = options.SystemClock.UtcNow + lifetime.Value; await _tokenManager.ExtendAsync(token, date); _logger.LogInformation("The expiration date of the refresh token '{Identifier}' " + "was automatically updated: {Date}.", identifier, date); } else if (await _tokenManager.GetExpirationDateAsync(token) != null) { // Note: the request cancellation token is deliberately not used here to ensure the caller // cannot prevent this operation from being executed by resetting the TCP connection. await _tokenManager.ExtendAsync(token, date : null); _logger.LogInformation("The expiration date of the refresh token '{Identifier}' was removed.", identifier); } return(true); } catch (OpenIddictExceptions.ConcurrencyException exception) { _logger.LogDebug(exception, "A concurrency exception occurred while trying to update the " + "expiration date of the token '{Identifier}'.", identifier); return(false); } catch (Exception exception) { _logger.LogWarning(exception, "An exception occurred while trying to update the " + "expiration date of the token '{Identifier}'.", identifier); return(false); } }