background
cli-authv0.1.0-beta

Tuotantotason OAuth CLI:llesi

Kaikki tarvittava sisältyy, täysin muokattava autentikaatiokirjasto. Neljä virtausta. Tunnusten tallennus, uudistus, prosessien välinen lukitus, avainrengasintegrointi. Jokainen osa hoidettu, jokainen osa vaihdettavissa.

$npm install cli-auth
MIT-lisenssiNode.js 22+Bun 1.1+Vain ESMTypeScript
~/projects/your-cli — zsh

Neljää virtausta. Yksi kirjasto.

Valitse strategia. Alustaratkaisut tulevat mukana.

LaitekoodiRFC 8628

Tämä on sopiva palvelimille, Docker-konsolille ja kaikkiin ympäristöihin, joissa selaimen avaaminen ei ole mahdollista.

  • Polling-silmukka hoitaa slow_down rajoitukset sekä voimassaoloajan umpeutumisen puolestasi
  • Käyttäjäkoodi tuodaan esiin onAuthorization-callbackilla, voit itse päättää miten se näytetään
  • Päivittää automaattisesti kun käyttöoikeustunnus on lähellä vanhenemista
Milloin valita tämä → Päätelaitteettomat, SSH tai etäyhteydet. Missä tahansa, missä CLI:si on ympäristössä, johon selain ei pääse. Käyttäjä kirjautuu sisään omalta koneeltaan samalla kun CLI:si pollingoi taustalla.
device-code.ts
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();

Asioita, joita kukaan ei kerro CLI-authin tarvitsevan.

Jokainen alla oleva huomio on oikea bugi, kilpajuoksutilanne tai määrityspykälä, jonka olemme jo ratkaisseet.

slow_down back-off
PKCE verifier + challenge
loopback on 127.0.0.1
O_CREAT | O_EXCL
atomic write + rename
cross-process lock
recheck after lock
0600 permissions
macOS Keychain
Windows Credential Store
Linux Secret Service
refresh token single-use
expiry threshold
per-resource token cache
proxy / OTel fetch hook
branded callback page
custom parameters
TypeScript discriminated unions
…and tests.
background

Vaihda mikä osa tahansa. Mikään ei ole musta laatikko.

Tallennus, lukitus, fetch ja callback-sivu ovat kaikki hookeja. Mikään ei ole kovakoodattu. Klikkaa paikkaa ja katso konfiguraation muuttuvan.

Vaihda tallennus
macOS Keychain, Windows Credential Store tai Linux Secret Service, minkä käyttöjärjestelmä tarjoaa. Toteutus @napi-rs/keyringin kautta.
cli-auth.config.ts
1import { 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});

Tuo oma tunnistautumispalvelu

Mikä tahansa OAuth 2.0 / OIDC -yhteensopiva palvelin käy. Ohjaa kirjasto omille päätepisteillesi ja se toimii. Tätä ei tehty vain Logtoa varten.

Logto
Auth0
Okta
Keycloak
Microsoft Entra
Google
Authelia
Any OIDC 2.0 server
Logto
Auth0
Okta
Keycloak
Microsoft Entra
Google
Authelia
Any OIDC 2.0 server

Usein kysytyt kysymykset

Miten tämä eroaa openid-clientista?

Toimiiko tämä Auth0:n, Oktan tai oman tarjoajan kanssa?

Miten prosessien välinen lukitus käytännössä toimii?

Mitä jos käyttöjärjestelmän avainrengas ei ole saatavilla?

Mitkä ajoympäristöt ovat tuettuja?

Voinko brändätä kirjauduttuasi-callback-sivun?

Avaa enemmän Logto Cloudilla

CLI-autentikointi ilman, että sinun tarvitsee tehdä sitä itse.