Interface IPersistedGrantStore
- Namespace
- Fdyay.IdentityServer.Stores
- Assembly
- Fdyay.IdentityServer.Core.dll
Stores persisted grants (codes, refresh tokens, reference tokens, consents).
public interface IPersistedGrantStore
Methods
GetAllAsync(PersistedGrantFilter, CancellationToken)
Gets all grants matching the filter.
Task<IEnumerable<PersistedGrant>> GetAllAsync(PersistedGrantFilter filter, CancellationToken cancellationToken = default)
Parameters
filterPersistedGrantFiltercancellationTokenCancellationToken
Returns
GetAsync(string, CancellationToken)
Gets a grant by key, or null if not found.
Task<PersistedGrant?> GetAsync(string key, CancellationToken cancellationToken = default)
Parameters
keystringcancellationTokenCancellationToken
Returns
RemoveAllAsync(PersistedGrantFilter, CancellationToken)
Removes all grants matching the filter.
Task RemoveAllAsync(PersistedGrantFilter filter, CancellationToken cancellationToken = default)
Parameters
filterPersistedGrantFiltercancellationTokenCancellationToken
Returns
RemoveAsync(string, CancellationToken)
Removes a grant by key.
Task RemoveAsync(string key, CancellationToken cancellationToken = default)
Parameters
keystringcancellationTokenCancellationToken
Returns
StoreAsync(PersistedGrant, CancellationToken)
Stores a grant.
Task StoreAsync(PersistedGrant grant, CancellationToken cancellationToken = default)
Parameters
grantPersistedGrantcancellationTokenCancellationToken
Returns
TryConsumeAsync(string, DateTime, CancellationToken)
Marks a grant consumed at consumedTime, unless it is gone or consumed already.
Task<bool> TryConsumeAsync(string key, DateTime consumedTime, CancellationToken cancellationToken = default)
Parameters
keystringThe grant's key.
consumedTimeDateTimeWhen it was consumed, written to ConsumedTime.
cancellationTokenCancellationTokenCancels the write.
Returns
- Task<bool>
True when this call consumed the grant; false when it was gone or another call had consumed it.
Remarks
The same guarantee as TryRemoveAsync(string, CancellationToken) for a one-time refresh token, which is consumed rather than removed so that a later presentation is recognised as a replay. The in-memory, Dapper and data-protecting stores consume in one step; this default reads, checks and writes back, as consuming did before 0.176.0.
TryRemoveAsync(string, CancellationToken)
Removes a grant by key, saying whether this call is the one that removed it.
Task<bool> TryRemoveAsync(string key, CancellationToken cancellationToken = default)
Parameters
keystringThe grant's key.
cancellationTokenCancellationTokenCancels the removal.
Returns
Remarks
What makes a one-time grant — an authorization code, a refresh token deleted on use — redeemable once when two requests present it at the same moment: both may read it, and only the one whose removal took it goes on. Ours (security), 0.176.0; Duende's store has no such member and its callers read, then remove.
The in-memory, Dapper and data-protecting stores take the grant in one step. This default, for a store of a host's own written before 0.176.0, reads and then removes — correct, and as open to the race as every store was before; a store that can delete and count the rows deleted in one statement should implement it.