From 6198008475d25b3d5327d2da26ae5f6c9565cd20 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 6 Mar 2025 14:18:55 +0100 Subject: [PATCH] =?UTF-8?q?feat(AuthClient):=20implementierte=20Methode=20?= =?UTF-8?q?PublicKeys.get=20=20-=20GetAllPublicKeysAsync=20Methode=20hinzu?= =?UTF-8?q?gef=C3=BCgt,=20um=20GetPublicKeyAsync=20Methode=20f=C3=BCr=20je?= =?UTF-8?q?den=20=C3=B6ffentlichen=20Schl=C3=BCssel=20aufzurufen.=20=20-?= =?UTF-8?q?=20Aktualisiert,=20um=20GetAllPublicKeysAsync=20Methode=20nach?= =?UTF-8?q?=20erfolgreichem=20Start=20und=20Wiederverbindung=20aufzurufen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/AsymmetricPublicKey.cs | 2 +- DigitalData.Auth.Client/AuthClient.cs | 12 ++++++++++++ DigitalData.Auth.Client/ClientParams.cs | 5 ++++- 3 files changed, 17 insertions(+), 2 deletions(-) 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