آپ کی ایپس کے لیے شناخت، کھلے معیارات پر
اندر تشریف لائیے۔
ایک اکاؤنٹ۔ ہر دروازہ۔
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 کی طرف سے شروع اور بیک چینل لاگ آؤٹ
اپنی ایپ سے سائن آؤٹ کریں، یا جب کہیں بھی کوئی سیشن ختم ہو تو 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خود ہوسٹ کرنے کی مکمل گائیڈ تیار ہو رہی ہے۔ اوپر دی گئی کمانڈز اس کا خاکہ ہیں۔
اپنے صارفین کو اندر لائیں۔
ایک ورک اسپیس اور ایک پروجیکٹ بنائیں، اور آپ کا پہلا انوائرنمنٹ اپنے جاری کنندہ، کلیدوں اور لابی کے ساتھ آتا ہے۔
ایک بار سائن ان کریں۔ ہر جگہ خوش آمدید۔