Identiti untuk aplikasi anda, di atas standard terbuka
Mengiringi anda masuk.
Satu akaun. Setiap pintu.
Usher Identity mendaftar masuk orang ke aplikasi anda dengan OpenID Connect dan OAuth 2.1: kunci laluan, kod, daftar masuk sosial dan organisasi, dengan setiap persekitaran diasingkan daripada yang lain.
Percuma untuk bermula. Boleh juga dijalankan pada pelayan anda sendiri.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
Lobby
Halaman daftar masuk yang menyambut, bukan menyoal siasat.
Lobby ialah halaman daftar masuk yang dihoskan oleh Usher Identity untuk aplikasi anda. Ia sentiasa menyatakan ke mana orang itu pergi, dan rupanya sama tidak kira aplikasi mana yang menghantar mereka, jadi orang belajar untuk mempercayainya.
- Menamakan produk yang anda tuju, setiap kali.
- Kunci laluan, kod melalui e-mel dan pautan ajaib, dengan kata laluan hanya jika anda mahu.
- Halaman tenang yang sama, cerah atau gelap, dalam setiap produk.
Ini ialah salinan Lobby yang berfungsi. Ia berjalan dalam halaman ini, tidak menghantar apa-apa, dan tidak mendaftar masuk sesiapa.
Standard, bukan kebergantungan
Menggunakan protokol yang sudah dikenali oleh susunan teknologi anda.
Usher Identity ialah penyedia OpenID Connect terlebih dahulu. Gunakan SDK kami apabila sesuai, atau mana-mana pustaka OIDC dalam mana-mana bahasa. Jika anda pergi suatu hari nanti, aplikasi anda tidak perlu mengubah cara ia mendaftar masuk pengguna.
- OIDC Core · Discovery
OpenID Connect
Dokumen penemuan untuk setiap persekitaran, token ID dan userinfo. Mana-mana pustaka klien yang diperakui berfungsi.
- S256 sahaja
OAuth 2.1 dengan PKCE
Kod kebenaran dengan PKCE untuk setiap klien, awam atau sulit. Tiada aliran implisit, tiada kata laluan di titik akhir token.
- RS256 · ES256 · EdDSA
JWKS dan putaran kunci
Setiap persekitaran menandatangan dengan kunci tersendiri, yang diterbitkan di jwks_uri miliknya. Putar kunci tanpa mengganggu orang yang sudah daftar masuk.
- RFC 7662 · RFC 7009
Introspeksi dan pembatalan
Tanya sama ada token masih sah, atau tamatkannya sekarang. Usher Identity menyemak sesinya sendiri pada setiap permintaan, jadi menamatkan sesi berkuat kuasa serta-merta.
Log keluar dimulakan RP dan saluran belakang
Daftar keluar dari aplikasi anda, atau biar Usher Identity memberitahu setiap aplikasi apabila sesi tamat di mana-mana.
- RFC 9449
DPoP
Ikat token pada kunci yang dipegang oleh klien, supaya token yang dicuri tidak berguna dengan sendirinya.
- WebAuthn
Kunci laluan
Ciri utama, bukan tambahan. Orang daftar masuk dengan cap jari, wajah atau kunci keselamatan, dan tiada apa-apa untuk dipancing.
- TOTP
Aplikasi pengesah
Kod berasaskan masa daripada mana-mana aplikasi pengesah, dengan kod sandaran. Jadikan faktor kedua pilihan atau wajib.
Pautan ajaib
Satu ketikan dari peti masuk. Jangka hayat singkat, sekali guna, dan terikat pada persekitaran yang menghantarnya.
Kod e-mel
Enam digit, untuk orang yang daftar masuk pada satu peranti dan membaca e-mel pada peranti lain.
Daftar masuk sosial
Google, GitHub, Microsoft dan Apple. Akaun hanya dipautkan apabila e-melnya telah dibuktikan.
Organisasi dan pasukan
Ahli, peranan dan jemputan untuk perniagaan yang menggunakan aplikasi anda.
- Akan datang
SAML
Daftar masuk tunggal dengan penyedia identiti tenaga kerja pelanggan anda.
- Akan datang
SCIM
Peruntukan dan nyahperuntukan daripada direktori pelanggan anda.
Cara daftar masuk berfungsi
Lima langkah, setiap satunya standard.
Inilah aliran kod kebenaran OpenID Connect dengan PKCE, aliran yang sama digunakan oleh setiap penyedia identiti yang serius. Tatal untuk melihatnya.
- 01
Aplikasi anda menghantar mereka ke Lobby.
Apabila seseorang memilih Teruskan dengan Usher Identity, aplikasi anda mengubah hala mereka ke titik akhir kebenaran persekitaran anda, dengan cabaran PKCE dan nilai state yang akan disemaknya kemudian.
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 daftar masuk, dengan cara mereka.
Kunci laluan, kod melalui e-mel, pautan ajaib, akaun sosial atau kata laluan: Lobby hanya menawarkan apa yang dibenarkan oleh persekitaran anda, dan sentiasa menyatakan aplikasi yang mereka tuju.
Usher IdentityUsher IdentityMeneruskan ke AcmeSelamat kembali.
Gunakan kunci laluanHantar kod melalui e-mel - 03
Mereka bersetuju untuk berkongsi.
Pada kali pertama, orang melihat apa yang diminta oleh aplikasi anda (profil mereka, e-mel mereka, kekal didaftar masuk) dan bersetuju sekali sahaja.
Acme ingin:
- Melihat nama dan gambar anda
- Melihat alamat e-mel anda
- Memastikan anda kekal didaftar masuk
BatalBenarkan - 04
Usher Identity memulangkan kod.
Pelayar kembali ke URI ubah hala anda dengan kod sekali guna yang sah selama lima minit, dan state yang anda hantar, yang disemak oleh aplikasi anda.
302 Found Location: https://app.acme.example/callback ?code=SplxlOBeZQQYbYS6WxSbIA &state=k3Jx…
- 05
Aplikasi anda menukarnya dengan token.
Pelayan anda menghantar kod dan pengesah PKCE ke titik akhir token. Sebagai balasan, ia menerima token ID yang menyatakan siapa mereka, token akses untuk API anda, dan token muat semula untuk kekal didaftar 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 }
Pengasingan secara reka bentuk
Setiap persekitaran ialah bangunan tersendiri.
Persekitaran produksi dan pembangunan anda, serta milik setiap pelanggan lain, tidak berkongsi apa-apa yang penting. Kesilapan dalam satu persekitaran tidak boleh membaca, menandatangan untuk atau daftar masuk ke persekitaran lain.
- Skema Postgres tersendiri
- Bukan lajur penyewa dalam jadual yang dikongsi: skema yang dibuat untuk persekitaran itu, dan tiada apa-apa lagi di dalamnya.
- Kunci tandatangan tersendiri
- Token daripada satu persekitaran tidak boleh sekali-kali disahkan dengan kunci persekitaran lain.
- Rahsia termeterai tersendiri
- Dimeterai dengan kunci data persekitaran itu sendiri, yang pula dibalut oleh kunci induk.
- Hos tersendiri
- Pengeluar berada di domain yang berasingan daripada laman web dan Console Usher, dengan kuki hos sahaja.
usheridentity.com
Laman web, Usher Identity Console, akaun Usher Identity
*.usherid.com
Satu pengeluar bagi setiap persekitaran, di domain yang berasingan
Pengguna, sesi dan token disimpan dalam skema yang dibuat untuk persekitaran ini. Pertanyaan dijalankan terhadap skema itu, tidak pernah terhadap jadual dikongsi yang mempunyai lajur penyewa.
Salin rahsia klien Google termeterai milik Acme produksi ke dalam Northwind produksi.
Untuk pembangun
Daftar masuk pertama anda, tiga cara.
Pasang SDK apabila ia tiba, gunakan pustaka OIDC yang sudah anda percayai, atau mulakan dengan membaca dokumen penemuan. Semuanya protokol yang sama di bawahnya.
// 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
Pelayan anda, kunci anda.
Gunakan Usher Identity sebagai perkhidmatan, atau jalankan platform yang sama pada pelayan anda sendiri, dengan kunci anda sendiri dan pangkalan data anda sendiri.
Docker
Satu fail Compose: aplikasi, Postgres, Valkey, tepi Caddy dan proksi keluar. Kontena berjalan tanpa keistimewaan baharu dan dengan keupayaan digugurkan.
Ubuntu
Pelayan Ubuntu biasa sudah memadai. Caddy menamatkan TLS, dan rahsia ialah fail yang diserahkan kepada kontena, tidak pernah dibakar ke dalam imej.
Postgres
Postgres menyimpan segala-galanya, satu skema bagi setiap persekitaran. Ia dan Valkey berada pada rangkaian tanpa laluan 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 penuh untuk menghos sendiri sedang dalam perjalanan. Arahan di atas menunjukkan gambarannya.
Iringi pengguna anda masuk.
Cipta ruang kerja dan projek, dan persekitaran pertama anda disertakan dengan pengeluar, kunci dan Lobby tersendiri.
Daftar masuk sekali. Dialu-alukan di mana-mana.