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.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
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.
- 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.
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.
- 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.
- 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
- 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 AcmeSelamat datang kembali.
Gunakan kunci sandiKirimi saya kode lewat email - 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 - 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…
- 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
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
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.
# 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 migrationsPanduan 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.