diff --git a/DigitalData.Auth.Abstractions/Models/AsymmetricPublicKey.cs b/DigitalData.Auth.Abstractions/Models/AsymmetricPublicKey.cs index 823c3b2..10b4875 100644 --- a/DigitalData.Auth.Abstractions/Models/AsymmetricPublicKey.cs +++ b/DigitalData.Auth.Abstractions/Models/AsymmetricPublicKey.cs @@ -10,5 +10,5 @@ public class AsymmetricPublicKey : IUniqueSecurityContext, IAsymmetricPublicKey public string? Id { get; init; } - public string Content { get; protected set; } = string.Empty; + public string Content { get; internal set; } = string.Empty; } diff --git a/DigitalData.Auth.Client/AuthClient.cs b/DigitalData.Auth.Client/AuthClient.cs index 5fb6f67..822bb8c 100644 --- a/DigitalData.Auth.Client/AuthClient.cs +++ b/DigitalData.Auth.Client/AuthClient.cs @@ -1,4 +1,5 @@ using DigitalData.Auth.Abstractions; +using DigitalData.Auth.Abstractions.Models; using Microsoft.AspNetCore.SignalR.Client; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -27,15 +28,20 @@ public class AuthClient : IAuthClient, IAsyncDisposable _connection.On(nameof(ReceivePublicKeyAsync), ReceivePublicKeyAsync); + _connection.Reconnected += async cnnId => await GetAllPublicKeysAsync(); + _logger = logger; } public bool IsConnected { get; private set; } = false; + public IEnumerable PublicKeys => _params.PublicKeys; + public async Task StartAsync() { await _connection.StartAsync(); IsConnected = true; + await GetAllPublicKeysAsync(); } public async Task TryStartAsync() @@ -58,6 +64,12 @@ public class AuthClient : IAuthClient, IAsyncDisposable public Task GetPublicKeyAsync(string issuer, string audience) => _connection.InvokeAsync(nameof(GetPublicKeyAsync), issuer, audience); + public async Task GetAllPublicKeysAsync() + { + foreach (var publicKey in PublicKeys) + await GetPublicKeyAsync(publicKey.Issuer, publicKey.Audience); + } + public virtual async ValueTask DisposeAsync() { await _connection.StopAsync(); diff --git a/DigitalData.Auth.Client/ClientParams.cs b/DigitalData.Auth.Client/ClientParams.cs index fa78d1a..f371e24 100644 --- a/DigitalData.Auth.Client/ClientParams.cs +++ b/DigitalData.Auth.Client/ClientParams.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.SignalR.Client; +using DigitalData.Auth.Abstractions.Models; +using Microsoft.AspNetCore.SignalR.Client; namespace DigitalData.Auth.Client; @@ -36,4 +37,6 @@ public class ClientParams return null; }); } + + public IEnumerable PublicKeys { get; init; } = new List(); } \ No newline at end of file