---
title: "sdk/windows"
description: "SDK C# / .NET pour les applications WinUI 3 utilisant WebView2 pourl'autorisation, PKCE S256 et IsolatedStorage protégé par DPAPI pour lapersistance des jetons."
locale: "fr"
---

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

# sdk/windows

## Statut

L'état du package est **Implémenté et vérifié localement**. La suite de tests unitaires .NET multiplateforme réussit. WebView2, DPAPI, WinUI 3 et un aller-retour réel avec un IdP nécessitent encore un environnement d'intégration Windows. Cette page documente le comportement implémenté; elle ne constitue pas une déclaration d'aptitude à la production.

Statut du registre : UNPUBLISHED. Installez ce SDK uniquement depuis un checkout du code source du dépôt ; n'utilisez pas de registre de paquets externe.

## Prérequis

- .NET 8 et Windows App SDK 1.6+
- WebView2 Runtime (Evergreen — préinstallé avec Microsoft Edge)
- L'application doit définir &lt;UseWinUI&gt;true&lt;/UseWinUI&gt; dans le fichier deprojet

## Installation

Ajoutez une ProjectReference vers le checkout du code source depuis le fichier projet de votre application :

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

## Démarrage rapide

```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 de schéma URI personnalisé (optionnel)

Si vous utilisez une redirection de schéma URI personnalisé plutôt que lafenêtre WebView2 intégrée, transmettez l'URI d'activation du protocole à`HandleRedirectAsync` :

```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);
}
}
```

## API principale

| Méthode | Description |
| --- | --- |
| `Configure(VonvonConfiguration)` | Initialiser le SDK. À appeler une seule fois au démarrage del'application. |
| `SignInAsync(options?, ct)` | Ouvrir une fenêtre d'autorisation WebView2 intégrée avec PKCE S256.Retourne VonvonSession à la fin. |
| `HandleRedirectAsync(Uri, ct)` | Traiter un callback de schéma URI personnalisé et échanger le coded'autorisation. |
| `GetSession(ct)` | Retourner la session actuelle non expirée, en effaçant l'état local expiré et en retournant null. |
| `GetAccessToken(options?, ct)` | Retourner le jeton d'accès actuel non expiré; ForceRefresh efface la session et exige une nouvelle autorisation. |
| `SignOut(ct)` | Effacer les jetons de session locaux depuis IsolatedStorage protégé parDPAPI. |
| `SetTokenStorage(ITokenStorage)` | Remplacer le DpapiTokenStorage par défaut par une implémentationpersonnalisée d'ITokenStorage. |

## Adaptateur de stockage

Le stockage par défaut chiffre les jetons avec DPAPI (portée CurrentUser)et les conserve dans IsolatedStorage. Implémentez `ITokenStorage`pour utiliser Windows Hello ou le Gestionnaire d'informationsd'identification :

```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());
```

## Dépendances

| Package | Version | Objectif |
| --- | --- | --- |
| `Microsoft.WindowsAppSDK` | 1.6.250228002 | Hôte WinUI 3 et intégration WebView2 |
| `Microsoft.Web.WebView2` | 1.0.3065.39 | Fenêtre d'autorisation embarquée basée sur Chromium |
| `System.Security.Cryptography.ProtectedData` | 8.0.0 | Chiffrement des jetons au repos avec DPAPI |

## Sécurité

- Client public — aucun secret client stocké ni transmis.
- PKCE S256 uniquement. Le serveur rejette la méthode plain challenge.
- Jetons chiffrés avec DPAPI (portée CurrentUser) et stockés dansIsolatedStorage. Non accessibles aux autres comptes Windows.
- État OAuth généré par requête ; validé lors de la redirection pourprévenir le CSRF.

## Limites connues

- WebView2 Runtime doit être présent. La prise en charge deWebAuthenticationBroker comme solution de repli est prévue mais pas encoreimplémentée.
- La verification du jeton ID par JWKS et la deconnexion end\_session sont implementees et testees localement. Les validations Windows WebView2, DPAPI et IdP restent requises avant L4.
- DpapiTokenStorage ne fonctionne pas sur les plateformes non Windows.Utilisez une autre implémentation d'ITokenStorage lors de la compilationcroisée.

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