background
cli-authv0.1.0-beta

Komut satırınız için üretim düzeyinde OAuth

Tüm pilleri dahil, tamamen eklenti tabanlı bir kimlik doğrulama kütüphanesi. Dört akış. Token depolama, yenileme, çoklu işlem kilidi, anahtar zinciri entegrasyonu. Her şey kullanıma hazır, her şey değiştirilebilir.

$npm install cli-auth
MIT lisansıNode.js 22+Bun 1.1+Sadece ESMTypeScript
~/projects/your-cli — zsh

Dört akış. Bir kütüphane.

Bir strateji seç. Altyapı yanında gelir.

Cihaz koduRFC 8628

Sunucular, Docker kabukları ve tarayıcı açamayacağınız herhangi bir sistem için ideal seçenek.

  • Anket döngüsü, slow_down geri çekilmesini ve bitiş süresini otomatik olarak halleder
  • Kullanıcı kodu onAuthorization geri çağrısı ile sunulur, gösterme şeklini sen belirlersin
  • Erişim token'ı süresi dolmaya yaklaşınca otomatik olarak yenilenir
Ne zaman bunu kullanmalı → Arayüzsüz, SSH veya uzaktan yönetimli. CLI'ın bir tarayıcının erişemediği yerde çalıştığı herhangi bir yer. Kullanıcı kendi bilgisayarından giriş yapar, CLI arka planda bekler.
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();

Kimsenin söylemediği CLI kimlik doğrulama detayları.

Aşağıdaki her not gerçek bir hata, yarış durumu veya bizim çoktan çözmüş olduğumuz bir spesifikasyon maddesidir.

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

Her parçayı değiştirin. Hiçbiri bir kara kutu değil.

Depolama, kilit, fetch ve callback sayfası tamamen kanca fonksiyonlar. Hiçbir şey sabit kodlu değil. Bir yuvaya tıkla ve yapılandırmanın kendini nasıl güncellediğini gör.

Şunu değiştir depolama
macOS Keychain, Windows Credential Store ya da Linux Secret Service; işletim sisteminin sağladığı ile çalışır. @napi-rs/keyring ile.
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});

Kendi kimlik sağlayıcınızı getirin

Herhangi bir OAuth 2.0 / OIDC-uyumlu sunucu ile çalışır. Kütüphaneyi uç noktalarınıza yönlendirin, başlasın. Bunu sadece Logto için yazmadık.

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

Sıkça sorulan sorular

Bu, openid-client'tan nasıl farklı?

Auth0, Okta veya kendi sağlayıcım ile çalışır mı?

Çapraz işlem kilidi nasıl çalışıyor?

İşletim sistemi anahtar zinciri yoksa ne olur?

Hangi çalışma ortamları destekleniyor?

Giriş sonrası callback sayfasını markalayabilir miyim?

Daha Fazlasını Logto Cloud ile Keşfedin

CLI kimlik doğrulaması, yazmak zorunda kalmadan.