---
title: "sdk/windows"
description: "SDK C# / .NET para aplicações WinUI 3 usando WebView2 paraautorização, PKCE S256 e IsolatedStorage protegido por DPAPI parapersistência de tokens."
locale: "pt-BR"
---

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

# sdk/windows

## Estado

O status do package é **Implementado e verificado localmente**. A suíte de testes unitários .NET multiplataforma passa. WebView2, DPAPI, WinUI 3 e um ciclo completo com um IdP real ainda exigem um ambiente de integração Windows. Esta página documenta o comportamento implementado; não é uma declaração de prontidão para produção.

Status do registry: UNPUBLISHED. Instale este SDK somente a partir do checkout do código-fonte do repositório; não use um registry de pacotes externo.

## Requisitos

- .NET 8 e Windows App SDK 1.6+
- WebView2 Runtime (Evergreen — pré-instalado com o Microsoft Edge)
- O aplicativo deve definir &lt;UseWinUI&gt;true&lt;/UseWinUI&gt; no arquivo deprojeto

## Instalação

Adicione uma ProjectReference para o checkout do código-fonte no arquivo de projeto do aplicativo:

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

## Início rápido

```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 esquema de URI personalizado (opcional)

Se usar um redirecionamento de esquema de URI personalizado em vez dajanela incorporada WebView2, encaminhe o URI de ativação do protocolopara `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 principal

| Método | Descrição |
| --- | --- |
| `Configure(VonvonConfiguration)` | Inicializa o SDK. Chame uma vez na inicialização do aplicativo. |
| `SignInAsync(options?, ct)` | Abre uma janela de autorização WebView2 incorporada com PKCE S256.Retorna VonvonSession ao concluir. |
| `HandleRedirectAsync(Uri, ct)` | Processa um callback de esquema de URI personalizado e troca o códigode autorização. |
| `GetSession(ct)` | Retornar a sessão atual não expirada, limpando o estado local expirado e retornando null. |
| `GetAccessToken(options?, ct)` | Retornar o token de acesso atual não expirado; ForceRefresh limpa a sessão e exige nova autorização. |
| `SignOut(ct)` | Limpa os tokens de sessão locais do IsolatedStorage protegido porDPAPI. |
| `SetTokenStorage(ITokenStorage)` | Substitua o DpapiTokenStorage padrão por uma implementaçãopersonalizada de ITokenStorage. |

## Adaptador de armazenamento

O armazenamento padrão criptografa os tokens com DPAPI (escopoCurrentUser) e os persiste no IsolatedStorage. Implemente`ITokenStorage` para usar o Windows Hello ou o CredentialManager:

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

## Dependências

| Pacote | Versão | Finalidade |
| --- | --- | --- |
| `Microsoft.WindowsAppSDK` | 1.6.250228002 | Host WinUI 3 e incorporação do WebView2 |
| `Microsoft.Web.WebView2` | 1.0.3065.39 | Janela de autorização incorporada baseada em Chromium |
| `System.Security.Cryptography.ProtectedData` | 8.0.0 | Criptografia de tokens em repouso com DPAPI |

## Segurança

- Cliente público — nenhum segredo de cliente armazenado ou transmitido.
- Apenas PKCE S256. O servidor rejeita o método de desafio plain.
- Tokens criptografados com DPAPI (escopo CurrentUser) e armazenados noIsolatedStorage. Não acessíveis a outras contas de usuário do Windows.
- State OAuth gerado por requisição; validado no redirecionamento paraprevenir CSRF.

## Limitações conhecidas

- O WebView2 Runtime deve estar presente. O suporte aWebAuthenticationBroker como fallback está planejado, mas ainda nãoimplementado.
- A verificacao de ID token com JWKS e o sign-out end\_session estao implementados e testados localmente. As validacoes de Windows WebView2, DPAPI e IdP ainda sao necessarias para L4.
- DpapiTokenStorage não funciona em plataformas não-Windows. Use umaimplementação diferente de ITokenStorage ao compilar de forma cruzada.

Source: https://vonvon.id/pt-br/sdks/windows/index.mdx
