コンテンツへ移動

@xid-kit/tauri

PKCE S256 フロー、ディープリンクコールバックハンドラー、OS キーチェーンアダプター、Rust プラグインテンプレートを備えた Tauri v2 デスクトップ SDK。

Markdown で表示

状態

パッケージステータス:現行パッケージ。JS ブリッジ、PKCE S256 フロー、ディープリンクコールバックハンドラー、OS キーチェーンアダプター、Rust プラグインテンプレートが実装済みです。本番インフラでの実際の IdP ラウンドトリップはまだ手動検証待ちです。

Tauri 設定

// tauri.conf.json
{
  "bundle": { "identifier": "com.example.myapp" },
  "plugins": {
    "deep-link": { "desktop": { "schemes": ["myapp"] } }
  }
}

Rust プラグイン

templates/xid-keychain-plugin.rssrc-tauri/src/xid_keychain.rs にコピーし、templates/tauri-app-setup.rs に従って登録します。src-tauri/Cargo.tomlkeyring = "2"tauri-plugin-deep-link = "2"tauri-plugin-shell = "2" を追加します。

JS 統合

import { createXidTauriClient, createTauriKeychainAdapter } from '@xid-kit/tauri'
import { invoke } from '@tauri-apps/api/core'
import { open } from '@tauri-apps/plugin-shell'
import { onOpenUrl } from '@tauri-apps/plugin-deep-link'

const client = createXidTauriClient({
  issuer: 'https://xid.dev',
  clientId: 'YOUR_CLIENT_ID',
  redirectUri: 'myapp://auth/callback',
  keychain: createTauriKeychainAdapter({ invoke }),
})

// Register deeplink handler (e.g. on App component mount)
await onOpenUrl(async (urls) => {
  for (const url of urls) await client.handleRedirect(url)
})

// Trigger sign-in: opens system browser
await client.signIn({ openUrl: open })

トークン取得とサインアウト

// Get current access token (refreshes transparently if near expiry)
const token = await client.getAccessToken()

// Get full session (userId, organizationId, expiresAt)
const session = await client.getSession()

// Revoke server session and clear all keychain entries
await client.signOut()

// OIDC RP-initiated logout URL for full IdP sign-out
const logoutUrl = client.buildSignOutUrl({ postLogoutRedirectUri: 'myapp://logout' })
await open(logoutUrl.toString())

Tauri ランタイムなしの開発/テスト

import { createXidTauriClient, createMemoryKeychainAdapter } from '@xid-kit/tauri'

const client = createXidTauriClient({
  issuer: 'http://localhost:8788',
  clientId: 'test-client',
  redirectUri: 'http://localhost:1420/callback',
  keychain: createMemoryKeychainAdapter(),
})

createXidTauriClient オプション

オプション 種別 説明
issuer string XID 発行者 URL
clientId string OAuth 2.0 client_id
redirectUri string カスタム URI スキームコールバック
scopes readonly string[] デフォルト:openid、profile、email
keychain XidKeychainAdapter トークンストレージアダプター。デフォルトは MemoryKeychainAdapter(本番では Tauri アダプターを使用してください)

XidTauriClient メソッド

方式 説明
signIn(options?) PKCE 認可 URL を構築します。openUrl コールバック経由で開きます
handleRedirect(url) ディープリンクを解析し、state を検証し、コードをトークンと交換します
getSession() TauriSession または null。期限切れ間近の場合はトークンを更新します
getAccessToken(options?) アクセストークン文字列または null。期限切れ間近の場合は更新します
signOut() サーバーセッションを取り消し、キーチェーンをクリアします
buildSignOutUrl(options?) RP 起点ログアウト用の OIDC end_session URL を構築します
setTokenStorage(adapter) ランタイム時にキーチェーンアダプターを交換します

PKCE とトークンストレージ

  • PKCE S256 が常に使用されます。plain チャレンジは生成されません。
  • ベリファイアーのエントロピーは 64 バイト。チャレンジは Web Crypto の crypto.subtle.digest('SHA-256', ...) で導出されます。
  • すべてのキーは xid.* 配下に名前空間化されます:xid.access_tokenxid.refresh_tokenxid.sessionxid.pkce_verifierxid.oauth_state
ナビゲーション

入力して検索...

矢印キーで移動Enter キーで選択Escape キーで閉じる