Langsung ke konten

Identitas untuk aplikasi Anda, dengan standar terbuka

Mengantar Anda masuk.

Satu akun. Semua pintu.

Usher Identity membantu orang masuk ke aplikasi Anda dengan OpenID Connect dan OAuth 2.1: kunci sandi, kode, masuk dengan akun sosial, dan organisasi, dengan setiap lingkungan terpisah dari lingkungan lainnya.

Gratis untuk memulai. Bisa juga dijalankan di server Anda sendiri.

Lobby

Halaman masuk yang menyambut, bukan menginterogasi.

Lobby adalah halaman masuk yang disediakan Usher Identity untuk aplikasi Anda. Lobby selalu menyebutkan tujuan orang tersebut, dan tampilannya sama dari aplikasi mana pun mereka datang, sehingga orang belajar memercayainya.

Melanjutkan ke
Tema
  • Menyebutkan produk tujuan Anda, setiap kali.
  • Kunci sandi, kode lewat email, dan tautan ajaib, dengan kata sandi hanya jika Anda menginginkannya.
  • Halaman tenang yang sama, terang atau gelap, di setiap produk.

Ini salinan Lobby yang berfungsi. Salinan ini berjalan di halaman ini, tidak mengirim apa pun, dan tidak benar-benar memasukkan siapa pun.

Usher IdentityUsher IdentityMelanjutkan ke Acme Notes

Selamat datang kembali.

Masuk dengan akun Usher Identity Anda.

Baru di sini?

Diamankan oleh Usher Identity

Standar, bukan penguncian vendor

Menggunakan protokol yang sudah dikenal stack Anda.

Usher Identity pada dasarnya adalah penyedia OpenID Connect. Gunakan SDK kami jika cocok, atau pustaka OIDC apa pun dalam bahasa apa pun. Jika suatu saat Anda pindah, aplikasi Anda tidak perlu mengubah cara penggunanya masuk.

Token refresh, persetujuan, dan cakupan sudah termasuk.
  • OIDC Core · Discovery

    OpenID Connect

    Dokumen discovery per lingkungan, token ID, dan userinfo. Pustaka klien bersertifikasi apa pun bisa digunakan.

  • Hanya S256

    OAuth 2.1 dengan PKCE

    Kode otorisasi dengan PKCE untuk setiap klien, publik maupun konfidensial. Tanpa alur implisit, tanpa kata sandi di endpoint token.

  • RS256 · ES256 · EdDSA

    JWKS dan rotasi kunci

    Setiap lingkungan menandatangani dengan kuncinya sendiri, yang dipublikasikan di jwks_uri-nya. Rotasikan kunci tanpa mengganggu orang yang sedang masuk.

  • RFC 7662 · RFC 7009

    Introspeksi dan pencabutan

    Tanyakan apakah sebuah token masih berlaku, atau akhiri sekarang juga. Usher Identity memeriksa sesinya sendiri di setiap permintaan, sehingga sesi yang diakhiri langsung berhenti.

  • Logout dari RP dan back-channel

    Keluar dari aplikasi Anda, atau minta Usher Identity memberi tahu setiap aplikasi saat sebuah sesi berakhir di mana pun.

  • RFC 9449

    DPoP

    Ikat token ke kunci yang dipegang klien, sehingga token yang dicuri tidak berguna dengan sendirinya.

  • WebAuthn

    Kunci sandi

    Fitur utama, bukan tambahan. Orang masuk dengan sidik jari, wajah, atau kunci keamanan, dan tidak ada yang bisa di-phishing.

  • TOTP

    Aplikasi autentikator

    Kode berbasis waktu dari autentikator apa pun, dengan kode cadangan. Jadikan faktor kedua opsional atau wajib.

  • Tautan ajaib

    Satu ketukan dari kotak masuk. Berumur pendek, sekali pakai, dan terikat pada lingkungan yang mengirimnya.

  • Kode lewat email

    Enam digit, untuk orang yang masuk di satu perangkat dan membaca email di perangkat lain.

  • Masuk dengan akun sosial

    Google, GitHub, Microsoft, dan Apple. Sebuah akun hanya ditautkan jika emailnya sudah terbukti.

  • Organisasi dan tim

    Anggota, peran, dan undangan untuk bisnis yang menggunakan aplikasi Anda.

  • Segera hadir

    SAML

    Single sign-on dengan penyedia identitas karyawan milik pelanggan Anda.

  • Segera hadir

    SCIM

    Penyediaan dan penonaktifan akun dari direktori pelanggan Anda.

Cara kerja proses masuk

Lima langkah, semuanya standar.

Inilah alur kode otorisasi OpenID Connect dengan PKCE, alur yang sama yang digunakan setiap penyedia identitas yang serius. Gulir untuk mengikutinya.

  1. 01

    Aplikasi Anda mengarahkan mereka ke Lobby.

    Saat seseorang memilih Lanjutkan dengan Usher Identity, aplikasi Anda mengalihkannya ke endpoint otorisasi lingkungan Anda, dengan tantangan PKCE dan nilai state yang akan diperiksanya nanti.

    GET acme.usherid.com/api/auth/oauth2/authorize
      ?response_type=code
      &client_id=acme_web
      &redirect_uri=https://app.acme.example/callback
      &scope=openid profile email offline_access
      &state=k3Jx…
      &code_challenge=E9Mel…cM
      &code_challenge_method=S256
  2. 02

    Mereka masuk, dengan cara mereka.

    Kunci sandi, kode lewat email, tautan ajaib, akun sosial, atau kata sandi: Lobby hanya menawarkan yang diizinkan lingkungan Anda, dan selalu menyebutkan aplikasi tujuan mereka.

    Usher IdentityUsher IdentityMelanjutkan ke Acme

    Selamat datang kembali.

    Gunakan kunci sandi
    Kirimi saya kode lewat email
  3. 03

    Mereka setuju untuk berbagi.

    Pada kali pertama, orang melihat apa yang diminta aplikasi Anda (profil, email, tetap masuk) dan menyetujuinya sekali saja.

    Acme ingin:

    • Melihat nama dan foto Anda
    • Melihat alamat email Anda
    • Membuat Anda tetap masuk
    BatalkanIzinkan
  4. 04

    Usher Identity mengembalikan sebuah kode.

    Browser kembali ke URI pengalihan Anda dengan kode sekali pakai yang berlaku lima menit, beserta state yang Anda kirim, yang diperiksa oleh aplikasi Anda.

    302 Found
    Location: https://app.acme.example/callback
      ?code=SplxlOBeZQQYbYS6WxSbIA
      &state=k3Jx…
  5. 05

    Aplikasi Anda menukarnya dengan token.

    Server Anda mengirim kode dan verifier PKCE ke endpoint token. Sebagai balasannya, datang token ID yang menyatakan siapa mereka, token akses untuk API Anda, dan token refresh agar mereka tetap masuk.

    POST acme.usherid.com/api/auth/oauth2/token
      grant_type=authorization_code&code=Splx…
      &code_verifier=dBjftJeZ4CVP…
    
    {
      "token_type": "Bearer",
      "access_token": "eyJhbGciOiJSUzI1NiIs…",
      "id_token": "eyJhbGciOiJSUzI1NiIs…",
      "refresh_token": "8xLOxBtZp8…",
      "expires_in": 600
    }

Terisolasi sejak dirancang

Setiap lingkungan adalah gedung tersendiri.

Lingkungan produksi dan pengembangan Anda, juga milik setiap pelanggan lain, tidak berbagi apa pun yang penting. Kesalahan di satu lingkungan tidak dapat membaca, menandatangani untuk, atau masuk ke lingkungan lain.

Skema Postgres sendiri
Bukan kolom tenant di tabel bersama, melainkan skema yang dibuat khusus untuk lingkungan itu, tanpa isi lain.
Kunci penandatanganan sendiri
Token dari satu lingkungan tidak pernah bisa diverifikasi dengan kunci lingkungan lain.
Rahasia tersegel sendiri
Disegel dengan kunci data milik lingkungan itu sendiri, yang dibungkus lagi oleh kunci induk.
Host sendiri
Penerbit berada di domain yang terpisah dari situs dan Console Usher, dengan cookie host-only.

usheridentity.com

Situs, Usher Identity Console, akun Usher Identity

*.usherid.com

Satu penerbit per lingkungan, di domain terpisah

Lingkungan

Pengguna, sesi, dan token berada di skema yang dibuat untuk lingkungan ini. Kueri berjalan pada skema itu, tidak pernah pada tabel bersama dengan kolom tenant.

Salin rahasia klien Google yang tersegel dari lingkungan produksi Acme ke lingkungan produksi Northwind.

Untuk pengembang

Proses masuk pertama Anda, dengan tiga cara.

Pasang SDK saat sudah tersedia, gunakan pustaka OIDC yang sudah Anda percaya, atau mulailah dengan membaca dokumen discovery. Di baliknya, semuanya protokol yang sama.

app/layout.tsx · app/page.tsxHadir bersama SDK
// app/layout.tsx
import { UsherProvider } from '@usher/nextjs'

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      <body>
        <UsherProvider>{children}</UsherProvider>
      </body>
    </html>
  )
}

// app/page.tsx
import { SignIn, UserButton, currentUser } from '@usher/nextjs'

export default async function Page() {
  const user = await currentUser()
  return user ? <UserButton /> : <SignIn />
}

Jalankan sendiri

Server Anda, kunci Anda.

Gunakan Usher Identity sebagai layanan, atau jalankan platform yang sama di server Anda sendiri, dengan kunci dan database Anda sendiri.

  • Docker

    Satu file Compose: aplikasi, Postgres, Valkey, edge Caddy, dan proxy egress. Kontainer berjalan tanpa hak istimewa baru dan dengan kapabilitas yang dilepas.

  • Ubuntu

    Server Ubuntu biasa sudah cukup. Caddy menangani terminasi TLS, dan rahasia diberikan ke kontainer sebagai file, tidak pernah ditanam di dalam image.

  • Postgres

    Postgres menyimpan semuanya, satu skema per lingkungan. Postgres dan Valkey berada di jaringan tanpa rute ke internet.

Dari salinan kode Usher Identity
# on an Ubuntu server with Docker Engine and the Compose plugin
bash infra/scripts/setup-env.sh --prod \
  --domain usher.example --tenant-domain usherid.example

docker compose -f compose.yaml -f compose.prod.yaml \
  --profile core --profile apps --profile edge up -d --wait

pnpm db:migrate   # applies the database migrations

Panduan lengkap untuk menjalankan Usher sendiri sedang disiapkan. Perintah di atas menggambarkan bentuknya.

Antar pengguna Anda masuk.

Buat ruang kerja dan proyek, dan lingkungan pertama Anda langsung hadir dengan penerbit, kunci, dan Lobby-nya sendiri.

Masuk sekali. Disambut di mana saja.