On-Premise انسٹالیشن کے لیے سنگل سائن آن
یہ صفحہ On-Premise MonoChat انسٹالیشن چلانے والوں کے لیے ہے۔ یہ بتاتا ہے کہ اپنے عملے کو OpenID Connect (OIDC) کے ذریعے کمپنی کے شناختی فراہم کنندہ (IdP) سے سائن اِن کیسے کرنے دیں، مثلاً Microsoft Entra ID، Okta، Keycloak، AD FS یا Google Workspace۔
سنگل سائن آن پوری انسٹالیشن کے لیے سرور کی سیٹنگز میں ترتیب دیا جاتا ہے، ہر تنظیم کے لیے الگ نہیں۔ ایک MonoChat اکاؤنٹ کئی تنظیموں سے تعلق رکھ سکتا ہے، اور لوگ کسی تنظیم کو منتخب کرنے سے پہلے سائن اِن کرتے ہیں۔ سائن اِن اکاؤنٹ دیتا ہے، رسائی نہیں: کسی شخص کو کوئی تنظیم تبھی نظر آتی ہے جب وہ تنظیم اسے مدعو کرے اور کوئی کردار دے۔
سائن اِن کیسے کام کرتا ہے
جب کوئی سائن اِن صفحے پر SSO بٹن پر کلک کرتا ہے تو MonoChat آپ کے IdP کا سائن اِن صفحہ ایک پاپ اَپ میں کھولتا ہے۔ وہاں سائن اِن کے بعد IdP براؤزر کو ایک بار استعمال ہونے والے کوڈ کے ساتھ MonoChat پر واپس بھیجتا ہے۔ MonoChat سرور کوڈ کو ID ٹوکن سے بدلتا ہے اور شخص کو سائن اِن کرنے سے پہلے اس کی جانچ کرتا ہے:
- IdP کے اینڈ پوائنٹس اور دستخطی کلیدیں ہر سائن اِن پر اس کی ڈسکوری دستاویز
<issuer>/.well-known/openid-configurationسے پڑھی جاتی ہیں۔ - سائن اِن PKCE (S256)، ایک
stateاور ایکnonceکے ساتھ authorization code فلو استعمال کرتا ہے۔ سائن اِن کی درخواست 10 منٹ تک درست رہتی ہے اور ایک بار استعمال ہو سکتی ہے۔ - ID ٹوکن پر IdP کی کسی کلید سے دستخط ہونا اور اس میں آپ کا issuer (
iss)، آپ کا client ID (aud)، درخواست کاnonceاور ایسی میعاد (exp) ہونا ضروری ہے جو ابھی ختم نہ ہوئی ہو۔ - ID ٹوکن میں شخص کا ای میل پتہ (
email) ہونا ضروری ہے۔ اگر IdP بتائے کہ پتہ تصدیق شدہ نہیں (email_verified: false) تو سائن اِن مسترد ہو جاتا ہے۔
1. MonoChat کو اپنے شناختی فراہم کنندہ کے پاس رجسٹر کریں
اپنے IdP میں MonoChat کے لیے ان اقدار کے ساتھ ایک ایپلیکیشن (کلائنٹ) بنائیں:
| IdP میں سیٹنگ | قدر |
|---|---|
| ایپلیکیشن کی قسم | client secret والی ویب ایپلیکیشن (خفیہ کلائنٹ) |
| سائن اِن کا ری ڈائریکٹ URI | https://<your MonoChat domain>/api/oauth/oidc/redirect |
| گرانٹ کی قسم | Authorization code |
| اسکوپس | openid email profile |
| ٹوکن اینڈ پوائنٹ پر کلائنٹ کی تصدیق | HTTP Basic تصدیق کے ساتھ بھیجا گیا client secret (client_secret_basic) |
یقینی بنائیں کہ ID ٹوکن میں email کلیم موجود ہو۔ client ID، client secret اور issuer نوٹ کر لیں۔ issuer وہ issuer قدر ہے جو IdP کی ڈسکوری دستاویز میں ہے۔ عام شکلیں:
| شناختی فراہم کنندہ | Issuer |
|---|---|
| Microsoft Entra ID | https://login.microsoftonline.com/<tenant id>/v2.0 |
| Okta | https://<your Okta domain>/oauth2/default یا https://<your Okta domain> |
| Keycloak | https://<your Keycloak host>/realms/<realm> |
| AD FS (2016 یا نیا) | https://<your AD FS host>/adfs |
| Google Workspace | https://accounts.google.com |
براؤزر میں <issuer>/.well-known/openid-configuration کھولیں اور اس کی issuer قدر بالکل ویسی ہی کاپی کریں، آخر میں / ہو تو اس سمیت۔ دونوں مختلف ہوں تو MonoChat کسی کو سائن اِن نہیں کرنے دیتا۔
2. سیٹنگز شامل کریں
سرور کی سیٹنگز میں oidc بلاکس شامل کریں اور MonoChat کو دوبارہ شروع کریں۔ عوامی بلاک public.oauth کے تحت اور خفیہ بلاک oauth کے تحت جاتا ہے:
{
"oauth": {
"oidc": {
"clientSecret": "<client secret>",
"autoCreateAccounts": true,
"allowedEmailDomains": ["company.com"]
}
},
"public": {
"oauth": {
"oidc": {
"issuer": "https://login.microsoftonline.com/<tenant id>/v2.0",
"clientId": "<client id>",
"redirectPath": "/api/oauth/oidc/redirect",
"scope": "openid email profile",
"buttonLabel": "Sign in with Company SSO"
}
}
}
}
| سیٹنگ | یہ کیا کرتی ہے |
|---|---|
public.oauth.oidc.issuer | مرحلہ 1 کا issuer |
public.oauth.oidc.clientId | مرحلہ 1 کا client ID |
public.oauth.oidc.redirectPath | مرحلہ 1 کے ری ڈائریکٹ URI کا راستہ |
public.oauth.oidc.scope | وہ اسکوپس جو MonoChat مانگتا ہے |
public.oauth.oidc.buttonLabel | سائن اِن بٹن کا متن۔ خالی ہو تو شخص کی زبان میں "SSO کے ساتھ سائن اِن کریں" دکھاتا ہے |
oauth.oidc.clientSecret | client secret۔ یہ سرور پر رہتا ہے |
oauth.oidc.autoCreateAccounts | true شخص کے پہلے SSO سائن اِن پر MonoChat اکاؤنٹ بناتا ہے، چاہے رجسٹریشن صرف دعوت سے ہو (public.disableSignup) |
oauth.oidc.allowedEmailDomains | صرف وہ لوگ SSO سے سائن اِن کر سکتے ہیں جن کا ای میل پتہ ان میں سے کسی ڈومین پر ہو۔ ہر ڈومین کی اجازت کے لیے اسے شامل نہ کریں |
اس کے بعد SSO بٹن سائن اِن صفحے پر نظر آتا ہے۔
کون سائن اِن کر سکتا ہے
- نئے لوگ۔
autoCreateAccounts: trueکے ساتھ شخص کا پہلا SSO سائن اِن اس کا اکاؤنٹ بناتا ہے۔ اس کے بغیر اکاؤنٹ صرف تب بنتا ہے جبpublic.disableSignupبند ہو یا شخص کسی دعوت سے سائن اِن کرے۔ - وہ لوگ جن کا اسی ای میل پتے سے پہلے سے اکاؤنٹ ہے۔
oauth.autoMerge: trueکے ساتھ پہلا SSO سائن اِن SSO کو موجودہ اکاؤنٹ سے جوڑ دیتا ہے، لیکن صرف تب جب ID ٹوکن بتائے کہ پتہ تصدیق شدہ ہے (email_verified: true)۔ ورنہ، اورautoMergeکے بغیر ہمیشہ، MonoChat شخص سے ایک بار پاس ورڈ سے سائن اِن کرنے کو کہتا ہے اور پھر SSO کو اکاؤنٹ سے جوڑتا ہے؛ کسی تنظیم کی دعوت قبول کرنے سے بھی SSO جڑ جاتا ہے۔ Microsoft Entra ID اور AD FSemail_verifiedنہیں بھیجتے، اس لیے ان کے ساتھ پاس ورڈ سے سائن اِن کی اجازت تب تک برقرار رکھیں جب تک سب SSO نہ جوڑ لیں، یا لوگوں کو دوبارہ مدعو کریں۔ - اجازت یافتہ ڈومینز۔
allowedEmailDomainsکے ساتھ کسی اور ڈومین کا پتہ مسترد ہو جاتا ہے۔ Google Workspace (issuerhttps://accounts.google.com) کے لیے MonoChat ای میل پتے کے بجائےhdکلیم، یعنی اکاؤنٹ کا Workspace ڈومین، جانچتا ہے، کیونکہ ذاتی Google اکاؤنٹ کسی بھی ڈومین کا پتہ استعمال کر سکتا ہے۔
SSO کو واحد سائن اِن طریقہ بنائیں
public.auth.methodsکو["oidc"]پر سیٹ کریں۔ تب سائن اِن صفحہ صرف SSO بٹن دکھاتا ہے اور سرور پاس ورڈ اور سوشل سائن اِن مسترد کرتا ہے۔- روٹ سپر صارفین (روٹ تنظیم میں root super کردار والے صارفین) اب بھی
/auth/signin?fallback=1پر اپنے پاس ورڈ سے سائن اِن کر سکتے ہیں، تاکہ IdP بند ہونے پر انسٹالیشن کبھی لاک نہ ہو۔ - نئے SSO اکاؤنٹس کو اپنی تنظیمیں کھولنے سے روکنے کے لیے
public.disableTenantCreationکوtrueپر سیٹ کریں۔ پھر صرف وہ لوگ کسی تنظیم کے تحت تنظیمیں بنا سکتے ہیں جن کا اس میں مناسب کردار ہو۔
نیٹ ورک
/api/oauth/oidc/authorizeاور اپناredirectPathسائن اِن کرنے والوں کے لیے قابلِ رسائی رکھیں۔ دونوں ان کے براؤزر میں کھلتے ہیں۔- MonoChat سرور کو HTTPS کے ذریعے آپ کے IdP کی ڈسکوری دستاویز، ٹوکن اینڈ پوائنٹ اور کلیدوں کے سیٹ (
jwks_uri) تک پہنچنا ضروری ہے۔
حدود
- MonoChat موبائل ایپ ابھی SSO پیش نہیں کرتی۔ اگر آپ SSO کو واحد سائن اِن طریقہ بنائیں تو ایجنٹس موبائل ایپ میں سائن اِن نہیں کر سکیں گے۔
- MonoChat سے سائن آؤٹ کرنے سے شخص IdP سے سائن آؤٹ نہیں ہوتا، اور IdP سے سائن آؤٹ کرنے سے ابھی MonoChat سے سائن آؤٹ نہیں ہوتا۔
اپنی ترتیب جانچیں
- سائن اِن صفحہ کھولیں اور SSO بٹن پر کلک کریں۔ اپنے IdP میں سائن اِن کریں؛ پاپ اَپ بند ہو جاتا ہے اور آپ MonoChat میں سائن اِن ہو جاتے ہیں۔
- ایسے شخص سے سائن اِن کریں جس کا ابھی MonoChat اکاؤنٹ نہ ہو، اور تصدیق کریں کہ اکاؤنٹ بن گیا (یا مسترد ہوا، اگر آپ نے
autoCreateAccountsآن نہیں کیا)۔ - اگر آپ نے
allowedEmailDomainsسیٹ کیا ہے تو کسی اور ڈومین کے شخص سے کوشش کریں اور تصدیق کریں کہ سائن اِن مسترد ہوا۔ - اگر آپ نے
public.auth.methodsسیٹ کیا ہے تو تصدیق کریں کہ پاس ورڈ والا سائن اِن مسترد ہوتا ہے، اور روٹ سپر صارف اب بھی/auth/signin?fallback=1پر سائن اِن کر سکتا ہے۔