Aller au contenu

@xid-kit/tauri

SDK bureau Tauri v2 avec flux PKCE S256, gestionnaire de callbackdeeplink, adaptateur de trousseau OS et modèle de plugin Rust.

Afficher en Markdown

Statut

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.

Le statut du package est Package actuel. Le pont JS, le flux PKCES256, le gestionnaire de callback deeplink, l’adaptateur de trousseau OSet le modèle de plugin Rust sont implémentés. Un aller-retour réel avec unIdP sur une infrastructure de production est en attente de vérificationmanuelle.

Configuration Tauri

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

Plugin Rust

Copiez templates/xid-keychain-plugin.rs dans src-tauri/src/xid_keychain.rs et enregistrez-le en suivant templates/tauri-app-setup.rs. Ajoutez keyring = "2", tauri-plugin-deep-link = "2" et tauri-plugin-shell = "2" dans src-tauri/Cargo.toml.

Intégration 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 })

Récupération du jeton et déconnexion

// Get the current unexpired access token. Expiry requires a new sign-in.
const token = await client.getAccessToken()

// Get the current unexpired session (userId, organizationId, expiresAt).
const session = await client.getSession()

// Clear local keychain state. No refresh or revoke request is sent.
await client.signOut()

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

Développement/test sans runtime 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(),
})

Options de createXidTauriClient

Option Type Description
issuer chaîne URL d’émetteur XID
clientId chaîne client_id OAuth 2.0
redirectUri chaîne Callback de schéma URI personnalisé
scopes readonly string[] Par défaut : openid, profile, email
keychain XidKeychainAdapter Adaptateur de stockage des jetons ; par défaut MemoryKeychainAdapter(utiliser l’adaptateur Tauri en production)

Méthodes XidTauriClient

Méthode Description
signIn(options?) Construire l’URL d’autorisation PKCE ; ouvrir via le callback openUrl
handleRedirect(url) Analyser le deeplink, valider l’état, échanger le code contre des jetons
getSession() TauriSession ou null pour une session locale actuelle non expirée; l’état expiré est effacé
getAccessToken(options?) Chaîne du jeton d’accès actuel non expiré ou null; aucune requête de renouvellement n’est effectuée. Le SDK rejette offline_access tant que DPoP n’est pas implémenté.
signOut() Effacer l’état local du trousseau sans requête de révocation
buildSignOutUrl(options?) Construire l’URL end_session OIDC pour la déconnexion initiée par le RP
setTokenStorage(adapter) Remplacer l’adaptateur de trousseau à l’exécution

PKCE et stockage des jetons

  • PKCE S256 est toujours utilisé. Le challenge plain n’est jamais généré.
  • L’entropie du vérificateur est de 64 octets ; le challenge est dérivé viaWeb Crypto crypto.subtle.digest('SHA-256', ...).
  • Toutes les clés utilisent l’espace de noms xid.*. xid.access_token est actuelle. xid.refresh_token est supprimée uniquement pour nettoyer les données héritées. xid.session, xid.pkce_verifier et xid.oauth_state contiennent l’état actuel de la session et de l’autorisation; aucun identifiant de renouvellement n’est lu ni écrit.
Navigation

Saisissez votre recherche...

Utilisez les touches fléchées pour naviguerAppuyez sur Entrée pour sélectionnerAppuyez sur Échap pour fermer