Class InMemoryPersistedGrantStore
- Namespace
- Fdyay.IdentityServer.Stores.InMemory
- Assembly
- Fdyay.IdentityServer.Core.dll
In-memory persisted grant store. Intended for development and testing.
public class InMemoryPersistedGrantStore : IPersistedGrantStore
- Inheritance
-
InMemoryPersistedGrantStore
- Implements
- Inherited Members
Methods
GetAllAsync(PersistedGrantFilter, CancellationToken)
Gets all grants matching the filter.
public 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.
public Task<PersistedGrant?> GetAsync(string key, CancellationToken cancellationToken = default)
Parameters
keystringcancellationTokenCancellationToken
Returns
RemoveAllAsync(PersistedGrantFilter, CancellationToken)
Removes all grants matching the filter.
public Task RemoveAllAsync(PersistedGrantFilter filter, CancellationToken cancellationToken = default)
Parameters
filterPersistedGrantFiltercancellationTokenCancellationToken
Returns
RemoveAsync(string, CancellationToken)
Removes a grant by key.
public Task RemoveAsync(string key, CancellationToken cancellationToken = default)
Parameters
keystringcancellationTokenCancellationToken
Returns
StoreAsync(PersistedGrant, CancellationToken)
Stores a grant.
public 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.
public 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.
public 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.