आपके ऐप के लिए आइडेंटिटी, ओपन स्टैंडर्ड पर
आपको अंदर ले चलता है।
एक खाता। हर दरवाज़ा।
Usher Identity, OpenID Connect और OAuth 2.1 से लोगों को आपके ऐप में साइन इन कराता है: पासकी, कोड, सोशल साइन-इन और संगठन, और हर एनवायरनमेंट बाक़ी सबसे अलग रहता है।
शुरुआत मुफ़्त। आपके अपने सर्वर पर भी चलता है।
- OpenID Connect
- OAuth 2.1
- PKCE
- WebAuthn
- JWKS
- DPoP
- TOTP
Lobby
ऐसा साइन‑इन पेज, जो पूछताछ नहीं, स्वागत करता है।
Lobby वह साइन-इन पेज है जिसे Usher Identity आपके ऐप के लिए होस्ट करता है। यह हमेशा बताती है कि व्यक्ति कहाँ जा रहा है, और चाहे किसी भी ऐप ने भेजा हो, एक जैसी दिखती है, ताकि लोग इस पर भरोसा करना सीख जाएँ।
- हर बार उस प्रोडक्ट का नाम दिखाती है, जिस पर आप जा रहे हैं।
- पासकी, ईमेल से भेजे गए कोड और मैजिक लिंक, और पासवर्ड सिर्फ़ तब, जब आप चाहें।
- हर प्रोडक्ट में वही सुकून भरा पेज, लाइट हो या डार्क।
यह Lobby की एक चालू कॉपी है। यह इसी पेज में चलती है, कुछ नहीं भेजती, और किसी को साइन इन नहीं कराती।
स्टैंडर्ड, लॉक-इन नहीं
वही प्रोटोकॉल, जो आपका स्टैक पहले से जानता है।
Usher Identity सबसे पहले एक OpenID Connect प्रोवाइडर है। जब ठीक लगे, हमारा SDK इस्तेमाल करें, या किसी भी भाषा की कोई भी OIDC लाइब्रेरी। अगर आप कभी Usher Identity छोड़ें, तो आपके ऐप को लोगों को साइन इन कराने का तरीक़ा नहीं बदलना पड़ेगा।
- 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
आपका ऐप उन्हें Lobby पर भेजता है।
जब कोई “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
वे अपने तरीक़े से साइन इन करते हैं।
पासकी, ईमेल से भेजा गया कोड, मैजिक लिंक, सोशल खाता या पासवर्ड: Lobby सिर्फ़ वही तरीक़े दिखाती है जिनकी आपका एनवायरनमेंट अनुमति देता है, और हमेशा बताती है कि वे किस ऐप पर जा रहे हैं।
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ख़ुद होस्ट करने की पूरी गाइड जल्द आ रही है। ऊपर के कमांड से उसका अंदाज़ा मिल जाता है।
अपने यूज़र्स को अंदर ले चलें।
एक वर्कस्पेस और एक प्रोजेक्ट बनाएँ, और आपका पहला एनवायरनमेंट अपने इश्यूअर, कुंजियों और Lobby के साथ तैयार मिलेगा।
एक बार साइन इन करें। हर जगह आपका स्वागत है।