---
title: "sdk/windows"
description: "C#/.NET-SDK für WinUI-3-Anwendungen mit WebView2 für die Autorisierung,PKCE S256 und DPAPI-geschütztem IsolatedStorage zur Token-Persistenz."
locale: "de"
---

> Documentation Index
> Fetch the relevant documentation index at: https://vonvon.id/de/sdks/llms.txt
> Use this file to discover all available pages before exploring further.

# sdk/windows

## Zustand

Der Paketstatus lautet **Lokal implementiert und verifiziert**. Die plattformübergreifende .NET-Unit-Test-Suite ist erfolgreich. WebView2, DPAPI, WinUI 3 und ein echter IdP-Roundtrip erfordern weiterhin eine Windows-Integrationsumgebung. Diese Seite dokumentiert implementiertes Verhalten; sie stellt keine Aussage zur Produktionsreife dar.

Registry-Status: UNPUBLISHED. Installieren Sie dieses SDK nur aus einem Checkout des Repository-Quellcodes; verwenden Sie keine externe Paket-Registry.

## Anforderungen

- .NET 8 und Windows App SDK 1.6+
- WebView2-Runtime (Evergreen — vorinstalliert mit Microsoft Edge)
- Die Anwendung muss &lt;UseWinUI&gt;true&lt;/UseWinUI&gt; in der Projektdatei setzen

## Installation

Fügen Sie der Projektdatei Ihrer Anwendung eine ProjectReference auf den Quellcode-Checkout hinzu:

```xml
<ItemGroup>
  <ProjectReference Include="../vonvon/sdk/windows/Vonvon.Windows.csproj" />
</ItemGroup>
```

## Schnellstart

```csharp
using Vonvon.Windows;

// 1. Configure in App.xaml.cs OnLaunched.
VonvonClient.Shared.Configure(new VonvonConfiguration
{
Issuer      = new Uri("https://vonvon.id"),
ClientId    = "your_client_id",
RedirectUri = "com.example.myapp://auth/callback",
// Scopes default: openid profile email. offline_access is rejected until DPoP is implemented.
});

// 2. Sign in (opens embedded WebView2 window)
VonvonSession session = await VonvonClient.Shared.SignInAsync();
Console.WriteLine($"Signed in: {session.User.Email}");

// 3. Get the current unexpired access token. Expiry requires reauthorization.
string? token = await VonvonClient.Shared.GetAccessToken();

// 4. Get the current unexpired session.
VonvonSession? current = await VonvonClient.Shared.GetSession();

// 5. Clear local state.
await VonvonClient.Shared.SignOut();
```

## Callback für benutzerdefiniertes URI-Schema (optional)

Wenn anstelle des eingebetteten WebView2-Fensters eine Weiterleitung überein benutzerdefiniertes URI-Schema verwendet wird, leiten Sie denProtokollaktivierungs-URI an `HandleRedirectAsync` weiter:

```csharp
// App.xaml.cs
protected override void OnActivated(IActivatedEventArgs args)
{
if (args.Kind == ActivationKind.Protocol)
{
    var protocolArgs = (ProtocolActivatedEventArgs)args;
    await VonvonClient.Shared.HandleRedirectAsync(protocolArgs.Uri);
}
}
```

## Kern-API

| Methode | Beschreibung |
| --- | --- |
| `Configure(VonvonConfiguration)` | SDK initialisieren. Einmalig beim Anwendungsstart aufrufen. |
| `SignInAsync(options?, ct)` | Ein eingebettetes WebView2-Autorisierungsfenster mit PKCE S256 öffnen.Gibt VonvonSession nach Abschluss zurück. |
| `HandleRedirectAsync(Uri, ct)` | Einen Custom-URI-Schema-Callback verarbeiten und den Autorisierungscodeeintauschen. |
| `GetSession(ct)` | Gibt die aktuelle, nicht abgelaufene Sitzung zurück, löscht abgelaufenen lokalen Status und gibt null zurück. |
| `GetAccessToken(options?, ct)` | Gibt das aktuelle, nicht abgelaufene Zugriffstoken zurück; ForceRefresh löscht die Sitzung und erfordert eine erneute Autorisierung. |
| `SignOut(ct)` | Lokale Sitzungs-Tokens aus dem DPAPI-geschützten IsolatedStorage löschen. |
| `SetTokenStorage(ITokenStorage)` | Den Standard-DpapiTokenStorage durch eine benutzerdefinierteITokenStorage-Implementierung ersetzen. |

## Speicher-Adapter

Der Standard-Speicher verschlüsselt Tokens mit DPAPI (CurrentUser-Bereich)und persistiert sie in IsolatedStorage. Implementieren Sie`ITokenStorage`, um Windows Hello oder denAnmeldeinformations-Manager zu verwenden:

```csharp
public sealed class MyCustomStorage : ITokenStorage
{
public Task SaveAsync(StoredTokenSet tokens, CancellationToken ct = default) { ... }
public Task<StoredTokenSet?> LoadAsync(CancellationToken ct = default) { ... }
public Task ClearAsync(CancellationToken ct = default) { ... }
}
VonvonClient.Shared.SetTokenStorage(new MyCustomStorage());
```

## Abhängigkeiten

| Paket | Version | Zweck |
| --- | --- | --- |
| `Microsoft.WindowsAppSDK` | 1.6.250228002 | WinUI-3-Host und WebView2-Einbettung |
| `Microsoft.Web.WebView2` | 1.0.3065.39 | Chromium-basiertes eingebettetes Autorisierungsfenster |
| `System.Security.Cryptography.ProtectedData` | 8.0.0 | DPAPI-Token-Verschlüsselung im Ruhezustand |

## Sicherheit

- Öffentlicher Client — kein Client-Secret gespeichert oder übertragen.
- Nur PKCE S256. Der Server lehnt die Plain-Challenge-Methode ab.
- Tokens mit DPAPI (CurrentUser-Bereich) verschlüsselt und inIsolatedStorage gespeichert. Für andere Windows-Benutzerkonten nichtzugänglich.
- OAuth-State wird pro Anfrage generiert; bei der Weiterleitung zurCSRF-Prävention validiert.

## Bekannte Einschränkungen

- WebView2-Runtime muss vorhanden sein.WebAuthenticationBroker-Unterstützung als Fallback ist geplant, aber nochnicht implementiert.
- JWKS-gestützte ID-Token-Prüfung und end\_session-Abmeldung sind implementiert und lokal getestet. Für L4 sind noch echte Windows-WebView2-, DPAPI- und IdP-Tests erforderlich.
- DpapiTokenStorage läuft nicht auf Nicht-Windows-Plattformen. Verwenden Siebeim Cross-Compiling eine andere ITokenStorage-Implementierung.

Source: https://vonvon.id/de/sdks/windows/index.mdx
