
Une bibliothèque d’authentification complète et entièrement modulaire. Quatre flux. Stockage des jetons, rafraîchissement, verrouillage inter-processus, intégration au trousseau. Tout est pris en charge, tout est interchangeable.
npm install cli-authChoisissez une stratégie. La plomberie vient avec.
Celui qu’il faut pour les serveurs, terminaux Docker et toutes les machines où ouvrir un navigateur n’est pas possible.
1import { createCliAuth, keyringStorage } from 'cli-auth';2import { Entry } from '@napi-rs/keyring';3 4const auth = createCliAuth({5 strategy: 'device-code',6 provider: {7 metadata: {8 deviceAuthorizationEndpoint: 'https://your-tenant.logto.app/oidc/device/auth',9 tokenEndpoint: 'https://your-tenant.logto.app/oidc/token',10 },11 },12 clientId: 'your-cli-client',13 storage: keyringStorage({ entry: new Entry('your-cli', 'tokens') }),14 scope: 'openid offline_access',15});16 17await auth.login({18 onAuthorization: ({ userCode, verificationUri }) => {19 console.log(`Visit ${verificationUri} and enter ${userCode}`);20 },21});22 23const accessToken = await auth.getToken();Chaque remarque ci-dessous correspond à un vrai bug, une course critique ou une clause de la spécification déjà gérés ici.

Stockage, verrouillage, fetch, et la page de callback sont tous des hooks. Rien n’est codé en dur. Cliquez sur un slot et voyez la config se réécrire automatiquement.
stockage1import { createCliAuth } from 'cli-auth';2 3const auth = createCliAuth({4 strategy: 'authorization-code',5 provider: { /* ... */ },6 clientId: 'your-cli-client',7 storage: keyringStorage({ entry: new Entry('your-cli', 'tokens') }),8});Tout serveur compatible OAuth 2.0 / OIDC fonctionne. Pointez la bibliothèque sur vos endpoints et ça roule. Nous n’avons pas créé cela uniquement pour Logto.
Authentification CLI sans l'écrire vous-même.