---
title: "sdk/windows"
description: "認可に WebView2、PKCE S256、トークン永続化に DPAPI 保護の IsolatedStorage を使用した WinUI 3 アプリケーション向け C# / .NET SDK。"
locale: "ja"
---

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

# sdk/windows

## 状態

パッケージのステータスは **実装済み・ローカル検証済み** です。クロスプラットフォームの .NET 単体テストスイートは成功しています。WebView2、DPAPI、WinUI 3、および実際の IdP ラウンドトリップの検証には、引き続き Windows 統合環境が必要です。このページは実装済みの動作を説明するものであり、本番対応済みであるとの主張ではありません。

Registry 状態: UNPUBLISHED。この SDK はリポジトリのソース checkout からのみインストールし、外部 package registry は使用しないでください。

## 動作要件

- .NET 8 および Windows App SDK 1.6+
- WebView2 Runtime（Evergreen — Microsoft Edge と共にプリインストール）
- アプリケーションはプロジェクトファイルで &lt;UseWinUI&gt;true&lt;/UseWinUI&gt; を設定する必要があります

## インストール

アプリケーションのプロジェクトファイルに、ソース checkout への ProjectReference を追加します:

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

## クイックスタート

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

## カスタム URI スキームコールバック（オプション）

WebView2 埋め込みウィンドウではなくカスタム URI スキームリダイレクトを使用する場合は、プロトコルアクティベーション URI を `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

| 方式 | 説明 |
| --- | --- |
| `Configure(VonvonConfiguration)` | SDK を初期化します。アプリケーション起動時に一度呼び出します。 |
| `SignInAsync(options?, ct)` | PKCE S256 で埋め込み WebView2 認可ウィンドウを開きます。完了時に VonvonSession を返します。 |
| `HandleRedirectAsync(Uri, ct)` | カスタム URI スキームコールバックを処理し、認可コードを交換します。 |
| `GetSession(ct)` | 現在の有効期限内のセッションを返します。ローカル state の有効期限が切れている場合は消去し、null を返します。 |
| `GetAccessToken(options?, ct)` | 現在の有効期限内の access token を返します。ForceRefresh はセッションを消去し、再認可を要求します。 |
| `SignOut(ct)` | DPAPI 保護の IsolatedStorage からローカルセッショントークンをクリアします。 |
| `SetTokenStorage(ITokenStorage)` | デフォルト DpapiTokenStorage をカスタム ITokenStorage 実装で置き換えます。 |

## ストレージアダプター

デフォルトストレージは DPAPI（CurrentUser スコープ）でトークンを暗号化し、IsolatedStorage に永続化します。Windows Hello や Credential Manager を使用するには `ITokenStorage` を実装してください：

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

## 依存関係

| パッケージ | バージョン | 目的 |
| --- | --- | --- |
| `Microsoft.WindowsAppSDK` | 1.6.250228002 | WinUI 3 ホストと WebView2 埋め込み |
| `Microsoft.Web.WebView2` | 1.0.3065.39 | Chromium ベースの埋め込み認可ウィンドウ |
| `System.Security.Cryptography.ProtectedData` | 8.0.0 | 保存時の DPAPI トークン暗号化 |

## セキュリティ

- パブリッククライアント — クライアントシークレットは保存・送信されません。
- PKCE S256 のみ。サーバーは plain チャレンジメソッドを拒否します。
- DPAPI（CurrentUser スコープ）で暗号化され、IsolatedStorage に保存されます。他の Windows ユーザーアカウントからはアクセスできません。
- リクエストごとに生成される OAuth state。CSRF を防ぐためリダイレクト時に検証されます。

## 既知の制限事項

- WebView2 Runtime が必要です。フォールバックとしての WebAuthenticationBroker のサポートは計画中ですが、まだ実装されていません。
- JWKS による ID token 検証と end\_session sign-out は実装済みでローカルテスト済みです。L4 には Windows WebView2、DPAPI、IdP の検証が必要です。
- DpapiTokenStorage は Windows 以外のプラットフォームでは動作しません。クロスコンパイル時は別の ITokenStorage 実装を使用してください。

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