तुमच्या ॲप्ससाठी आयडेंटिटी, खुल्या मानकांवर
तुम्हाला आत घेऊन जाते.
एक खाते. प्रत्येक दार.
Usher Identity लोकांना OpenID Connect आणि OAuth 2.1 वापरून तुमच्या ॲप्समध्ये साइन इन करते: पासकी, कोड, सोशल साइन-इन आणि संस्था, आणि प्रत्येक एन्व्हायर्नमेंट इतर प्रत्येकापासून वेगळे ठेवलेले.
सुरुवात विनामूल्य. तुमच्या स्वतःच्या सर्व्हरवरही चालते.
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
लॉबी
चौकशी करणारे नव्हे, स्वागत करणारे साइन‑इन पेज.
लॉबी हे Usher Identity तुमच्या ॲपसाठी होस्ट करत असलेले साइन-इन पेज आहे. व्यक्ती कुठे जात आहे हे ते नेहमी सांगते, आणि कोणत्याही ॲपने पाठवले तरी ते सारखेच दिसते, त्यामुळे लोक त्यावर विश्वास ठेवायला शिकतात.
- तुम्ही ज्या उत्पादनाकडे जात आहात त्याचे नाव, प्रत्येक वेळी.
- पासकी, ईमेलने पाठवलेले कोड आणि मॅजिक लिंक, आणि तुम्हाला हवे असल्यासच पासवर्ड.
- प्रत्येक उत्पादनात तेच शांत पेज, लाइट किंवा डार्क.
ही लॉबीची चालणारी प्रत आहे. ती याच पेजमध्ये चालते, काहीही पाठवत नाही, आणि कोणालाही साइन इन करत नाही.
मानके, बंधन नव्हे
तुमच्या स्टॅकला आधीच माहीत असलेले प्रोटोकॉल बोलते.
Usher Identity हा सर्वप्रथम OpenID Connect प्रोव्हायडर आहे. सोयीचे असेल तेव्हा आमचे SDK वापरा, किंवा कोणत्याही भाषेतील कोणतीही OIDC लायब्ररी. तुम्ही कधी सोडून गेलात, तरी तुमच्या ॲप्सना लोकांना साइन इन करण्याची पद्धत बदलावी लागत नाही.
- OIDC Core · Discovery
OpenID Connect
प्रत्येक एन्व्हायर्नमेंटसाठी एक डिस्कव्हरी दस्तऐवज, ID टोकन आणि userinfo. कोणतीही प्रमाणित क्लायंट लायब्ररी चालते.
- फक्त S256
PKCE सह OAuth 2.1
प्रत्येक क्लायंटसाठी, पब्लिक असो वा कॉन्फिडेन्शियल, PKCE सह ऑथरायझेशन कोड. इम्प्लिसिट फ्लो नाही, टोकन एंडपॉइंटवर पासवर्ड नाहीत.
- RS256 · ES256 · EdDSA
JWKS आणि की रोटेशन
प्रत्येक एन्व्हायर्नमेंट स्वतःच्या की ने साइन करते, ज्या त्याच्या jwks_uri वर प्रकाशित होतात. साइन इन असलेल्या लोकांना अडथळा न आणता त्या रोटेट करा.
- RFC 7662 · RFC 7009
इंट्रोस्पेक्शन आणि रद्द करणे
टोकन अजून वैध आहे का ते विचारा, किंवा ते आत्ताच संपवा. Usher Identity प्रत्येक विनंतीवर स्वतःचे सेशन तपासते, त्यामुळे सेशन संपवल्यास ते लगेच लागू होते.
RP-initiated आणि बॅक-चॅनेल लॉगआउट
तुमच्या ॲपमधून साइन आउट करा, किंवा कुठेही सेशन संपल्यावर Usher Identity ला प्रत्येक ॲपला कळवू द्या.
- RFC 9449
DPoP
टोकन क्लायंटकडील एका की शी बांधा, म्हणजे चोरलेले टोकन एकट्याने काहीच कामाचे राहत नाही.
- WebAuthn
पासकी
मुख्य सुविधा, जोडलेली ॲड-ऑन नव्हे. लोक फिंगरप्रिंट, चेहरा किंवा सिक्युरिटी की ने साइन इन करतात, आणि फिशिंगसाठी काहीच उरत नाही.
- TOTP
ऑथेंटिकेटर ॲप्स
कोणत्याही ऑथेंटिकेटरमधील वेळेवर आधारित कोड, बॅकअप कोडसह. दुसरा फॅक्टर पर्यायी किंवा अनिवार्य करा.
मॅजिक लिंक
इनबॉक्समधून एक टॅप. अल्पकालीन, एकदाच वापरता येणाऱ्या, आणि त्या पाठवणाऱ्या एन्व्हायर्नमेंटशी बांधलेल्या.
ईमेल कोड
सहा अंक, जे लोक एका डिव्हाइसवर साइन इन करतात आणि दुसऱ्यावर ईमेल वाचतात त्यांच्यासाठी.
सोशल साइन-इन
Google, GitHub, Microsoft आणि Apple. खाते फक्त तेव्हाच जोडले जाते जेव्हा त्याचा ईमेल सिद्ध झालेला असतो.
संस्था आणि टीम
तुमचे ॲप वापरणाऱ्या व्यवसायांसाठी सदस्य, भूमिका आणि आमंत्रणे.
- लवकरच
SAML
तुमच्या ग्राहकांच्या कर्मचारी आयडेंटिटी प्रोव्हायडरसह सिंगल साइन-ऑन.
- लवकरच
SCIM
तुमच्या ग्राहकांच्या डिरेक्टरीमधून प्रोव्हिजनिंग आणि डीप्रोव्हिजनिंग.
साइन-इन कसे चालते
पाच पायऱ्या, प्रत्येक मानक.
हा OpenID Connect चा PKCE सह ऑथरायझेशन कोड फ्लो आहे, तोच फ्लो जो प्रत्येक गंभीर आयडेंटिटी प्रोव्हायडर बोलतो. स्क्रोल करून पाहा.
- 01
तुमचे ॲप त्यांना लॉबीकडे पाठवते.
कोणी Usher Identity सह पुढे जा निवडल्यावर, तुमचे ॲप त्यांना तुमच्या एन्व्हायर्नमेंटच्या ऑथरायझेशन एंडपॉइंटकडे रीडायरेक्ट करते, एक PKCE चॅलेंज आणि नंतर तपासायचे state मूल्य सोबत घेऊन.
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
ते त्यांच्या पद्धतीने साइन इन करतात.
पासकी, ईमेलने पाठवलेला कोड, मॅजिक लिंक, सोशल खाते किंवा पासवर्ड: लॉबी फक्त तुमचे एन्व्हायर्नमेंट परवानगी देते तेवढेच पर्याय देते, आणि ते कोणत्या ॲपकडे जात आहेत हे नेहमी सांगते.
Usher IdentityUsher IdentityAcme कडे पुढे जात आहातपुन्हा स्वागत आहे.
पासकी वापरामला ईमेलने कोड पाठवा - 03
ते शेअर करायला संमती देतात.
पहिल्यांदा, तुमचे ॲप काय मागत आहे ते लोक पाहतात (त्यांचे प्रोफाइल, त्यांचा ईमेल, साइन इन राहणे) आणि एकदाच संमती देतात.
Acme ला हे करायचे आहे:
- तुमचे नाव आणि फोटो पाहणे
- तुमचा ईमेल पत्ता पाहणे
- तुम्हाला साइन इन ठेवणे
रद्द करापरवानगी द्या - 04
Usher Identity एक कोड परत देते.
ब्राउझर तुमच्या रीडायरेक्ट URI वर परत येतो, पाच मिनिटे टिकणारा एकदाच वापरता येणारा कोड आणि तुम्ही पाठवलेले state घेऊन, जे तुमचे ॲप तपासते.
302 Found Location: https://app.acme.example/callback ?code=SplxlOBeZQQYbYS6WxSbIA &state=k3Jx…
- 05
तुमचे ॲप त्याच्या बदल्यात टोकन घेते.
तुमचा सर्व्हर कोड आणि PKCE व्हेरिफायर टोकन एंडपॉइंटला पाठवतो. परत येतात: ते कोण आहेत हे सांगणारे ID टोकन, तुमच्या API साठी ॲक्सेस टोकन, आणि साइन इन राहण्यासाठी रिफ्रेश टोकन.
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 }
रचनेतूनच वेगळेपण
प्रत्येक एन्व्हायर्नमेंट ही स्वतःची स्वतंत्र इमारत आहे.
तुमचे प्रोडक्शन आणि डेव्हलपमेंट एन्व्हायर्नमेंट, आणि इतर प्रत्येक ग्राहकाचे, महत्त्वाचे असे काहीही शेअर करत नाहीत. एकातली चूक दुसऱ्यातला डेटा वाचू शकत नाही, त्याच्या नावाने साइन करू शकत नाही, किंवा त्यात साइन इन करू शकत नाही.
- स्वतःचा Postgres स्कीमा
- शेअर केलेल्या टेबलमधील टेनंट कॉलम नव्हे: एन्व्हायर्नमेंटसाठी बनवलेला स्कीमा, आणि त्यात दुसरे काहीही नाही.
- स्वतःच्या साइनिंग की
- एका एन्व्हायर्नमेंटचे टोकन दुसऱ्याच्या की ने कधीही व्हेरिफाय होऊ शकत नाहीत.
- स्वतःचे सील केलेले सिक्रेट
- एन्व्हायर्नमेंटच्या स्वतःच्या डेटा की ने सील केलेले, आणि ती डेटा की स्वतः मास्टर की ने गुंडाळलेली.
- स्वतःचा होस्ट
- इश्युअर Usher च्या साइट आणि Console पेक्षा वेगळ्या डोमेनवर असतात, होस्ट-ओन्ली कुकीसह.
usheridentity.com
साइट, Usher Identity Console, Usher Identity खाती
*.usherid.com
प्रत्येक एन्व्हायर्नमेंटसाठी एक इश्युअर, वेगळ्या डोमेनवर
वापरकर्ते, सेशन आणि टोकन या एन्व्हायर्नमेंटसाठी बनवलेल्या स्कीमामध्ये असतात. क्वेरी त्याच स्कीमावर चालतात, टेनंट कॉलम असलेल्या शेअर केलेल्या टेबलवर कधीही नाही.
Acme प्रोडक्शन चे सील केलेले Google क्लायंट सिक्रेट Northwind प्रोडक्शन मध्ये कॉपी करा.
डेव्हलपरसाठी
तुमचे पहिले साइन‑इन, तीन प्रकारे.
SDK आल्यावर ते जोडा, तुमचा आधीच विश्वास असलेली OIDC लायब्ररी वापरा, किंवा डिस्कव्हरी दस्तऐवज वाचून सुरुवात करा. आतून सगळा एकच प्रोटोकॉल आहे.
// 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 />
}स्वतः चालवा
तुमचे सर्व्हर, तुमच्या की.
Usher Identity सेवा म्हणून वापरा, किंवा तोच प्लॅटफॉर्म तुमच्या स्वतःच्या सर्व्हरवर, तुमच्या स्वतःच्या की आणि तुमच्या स्वतःच्या डेटाबेससह चालवा.
Docker
एक Compose फाइल: ॲप्स, Postgres, Valkey, Caddy एज आणि इग्रेस प्रॉक्सी. कंटेनर नवीन विशेषाधिकारांशिवाय आणि कॅपेबिलिटी काढून टाकून चालतात.
Ubuntu
साधा Ubuntu सर्व्हर पुरेसा आहे. Caddy TLS हाताळते, आणि सिक्रेट कंटेनरना फाइल म्हणून दिले जातात, इमेजमध्ये कधीही घातले जात नाहीत.
Postgres
Postgres सर्व काही ठेवते, प्रत्येक एन्व्हायर्नमेंटसाठी एक स्कीमा. ते आणि Valkey अशा नेटवर्कवर असतात ज्याला इंटरनेटपर्यंत कोणताही मार्ग नाही.
# 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स्वतः होस्ट करण्याचे पूर्ण मार्गदर्शक येत आहे. वरील कमांड त्याची रूपरेषा दाखवतात.
तुमच्या वापरकर्त्यांना आत घेऊन जा.
एक वर्कस्पेस आणि एक प्रोजेक्ट तयार करा, आणि तुमचे पहिले एन्व्हायर्नमेंट स्वतःचा इश्युअर, स्वतःच्या की आणि स्वतःची लॉबी घेऊन येते.
एकदा साइन इन करा. सगळीकडे स्वागत.