feat(AuthClient): implementierte Methode PublicKeys.get

- GetAllPublicKeysAsync Methode hinzugefügt, um GetPublicKeyAsync Methode für jeden öffentlichen Schlüssel aufzurufen.
 - Aktualisiert, um GetAllPublicKeysAsync Methode nach erfolgreichem Start und Wiederverbindung aufzurufen
This commit is contained in:
Developer 02 2025-03-06 14:18:55 +01:00
parent 8682f1f9e0
commit 6198008475
3 changed files with 17 additions and 2 deletions

View File

@ -10,5 +10,5 @@ public class AsymmetricPublicKey : IUniqueSecurityContext, IAsymmetricPublicKey
public string? Id { get; init; } public string? Id { get; init; }
public string Content { get; protected set; } = string.Empty; public string Content { get; internal set; } = string.Empty;
} }

View File

@ -1,4 +1,5 @@
using DigitalData.Auth.Abstractions; using DigitalData.Auth.Abstractions;
using DigitalData.Auth.Abstractions.Models;
using Microsoft.AspNetCore.SignalR.Client; using Microsoft.AspNetCore.SignalR.Client;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
@ -27,15 +28,20 @@ public class AuthClient : IAuthClient, IAsyncDisposable
_connection.On<string, string, string>(nameof(ReceivePublicKeyAsync), ReceivePublicKeyAsync); _connection.On<string, string, string>(nameof(ReceivePublicKeyAsync), ReceivePublicKeyAsync);
_connection.Reconnected += async cnnId => await GetAllPublicKeysAsync();
_logger = logger; _logger = logger;
} }
public bool IsConnected { get; private set; } = false; public bool IsConnected { get; private set; } = false;
public IEnumerable<AsymmetricPublicKey> PublicKeys => _params.PublicKeys;
public async Task StartAsync() public async Task StartAsync()
{ {
await _connection.StartAsync(); await _connection.StartAsync();
IsConnected = true; IsConnected = true;
await GetAllPublicKeysAsync();
} }
public async Task<bool> TryStartAsync() public async Task<bool> TryStartAsync()
@ -58,6 +64,12 @@ public class AuthClient : IAuthClient, IAsyncDisposable
public Task GetPublicKeyAsync(string issuer, string audience) => _connection.InvokeAsync(nameof(GetPublicKeyAsync), issuer, audience); 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() public virtual async ValueTask DisposeAsync()
{ {
await _connection.StopAsync(); await _connection.StopAsync();

View File

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.SignalR.Client; using DigitalData.Auth.Abstractions.Models;
using Microsoft.AspNetCore.SignalR.Client;
namespace DigitalData.Auth.Client; namespace DigitalData.Auth.Client;
@ -36,4 +37,6 @@ public class ClientParams
return null; return null;
}); });
} }
public IEnumerable<AsymmetricPublicKey> PublicKeys { get; init; } = new List<AsymmetricPublicKey>();
} }