Relay: end a user's sessions into a vault the moment they lose access to it

This commit is contained in:
jaap-jan committed 2026-10-02 14:26:44 +02:00
1 parent 965c9a7043
commit 170caa1391
12 files changed
+281 -38

No files matched your search

+5 -6
View File
@@ -41,13 +41,12 @@ builder.Services.AddScoped<VaultGrantService>();
builder.Services.AddScoped<IIdentityBindingVerifier, IdentityBindingVerifier>();
builder.Services.AddSingleton<ICursorKeyProvider, CursorKeyProvider>();
// A singleton, because the sockets it holds outlive the requests that opened them. Registered twice
// resolving to the same instance: the endpoint needs the whole hub — admit, remove, count — while the
// write paths that announce a change need only the two methods that announce one, and should not gain
// a reference to connection management to get them.
// A singleton, because the sockets it holds outlive the requests that opened them. The endpoint needs the
// whole hub — admit, remove, count — while the write paths that announce a change need only the two methods
// that announce one, and get them from a fan-out that also tells the relay: a user who loses access to a
// vault loses their relay sessions into it too. See VaultEventFanOut and RelayAccessWatch.
builder.Services.AddSingleton<VaultEventHub>();
builder.Services.AddSingleton<IVaultEventPublisher>(
provider => provider.GetRequiredService<VaultEventHub>());
builder.Services.AddSingleton<IVaultEventPublisher, VaultEventFanOut>();
// The relay's services, its ticket key ring, and a shutdown long enough for its drain. See ADR 0004.
builder.Services.AddDodoRelay();