مین مواد پر جائیں

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 والی ویب ایپلیکیشن (خفیہ کلائنٹ)
سائن اِن کا ری ڈائریکٹ URIhttps://<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 IDhttps://login.microsoftonline.com/<tenant id>/v2.0
Oktahttps://<your Okta domain>/oauth2/default یا https://<your Okta domain>
Keycloakhttps://<your Keycloak host>/realms/<realm>
AD FS (2016 یا نیا)https://<your AD FS host>/adfs
Google Workspacehttps://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.clientSecretclient secret۔ یہ سرور پر رہتا ہے
oauth.oidc.autoCreateAccountstrue شخص کے پہلے 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 FS email_verified نہیں بھیجتے، اس لیے ان کے ساتھ پاس ورڈ سے سائن اِن کی اجازت تب تک برقرار رکھیں جب تک سب SSO نہ جوڑ لیں، یا لوگوں کو دوبارہ مدعو کریں۔
  • اجازت یافتہ ڈومینز۔ allowedEmailDomains کے ساتھ کسی اور ڈومین کا پتہ مسترد ہو جاتا ہے۔ Google Workspace (issuer https://accounts.google.com) کے لیے MonoChat ای میل پتے کے بجائے hd کلیم، یعنی اکاؤنٹ کا Workspace ڈومین، جانچتا ہے، کیونکہ ذاتی Google اکاؤنٹ کسی بھی ڈومین کا پتہ استعمال کر سکتا ہے۔

SSO کو واحد سائن اِن طریقہ بنائیں​

  1. public.auth.methods کو ["oidc"] پر سیٹ کریں۔ تب سائن اِن صفحہ صرف SSO بٹن دکھاتا ہے اور سرور پاس ورڈ اور سوشل سائن اِن مسترد کرتا ہے۔
  2. روٹ سپر صارفین (روٹ تنظیم میں root super کردار والے صارفین) اب بھی /auth/signin?fallback=1 پر اپنے پاس ورڈ سے سائن اِن کر سکتے ہیں، تاکہ IdP بند ہونے پر انسٹالیشن کبھی لاک نہ ہو۔
  3. نئے SSO اکاؤنٹس کو اپنی تنظیمیں کھولنے سے روکنے کے لیے public.disableTenantCreation کو true پر سیٹ کریں۔ پھر صرف وہ لوگ کسی تنظیم کے تحت تنظیمیں بنا سکتے ہیں جن کا اس میں مناسب کردار ہو۔

نیٹ ورک​

  • /api/oauth/oidc/authorize اور اپنا redirectPath سائن اِن کرنے والوں کے لیے قابلِ رسائی رکھیں۔ دونوں ان کے براؤزر میں کھلتے ہیں۔
  • MonoChat سرور کو HTTPS کے ذریعے آپ کے IdP کی ڈسکوری دستاویز، ٹوکن اینڈ پوائنٹ اور کلیدوں کے سیٹ (jwks_uri) تک پہنچنا ضروری ہے۔

حدود​

  • MonoChat موبائل ایپ ابھی SSO پیش نہیں کرتی۔ اگر آپ SSO کو واحد سائن اِن طریقہ بنائیں تو ایجنٹس موبائل ایپ میں سائن اِن نہیں کر سکیں گے۔
  • MonoChat سے سائن آؤٹ کرنے سے شخص IdP سے سائن آؤٹ نہیں ہوتا، اور IdP سے سائن آؤٹ کرنے سے ابھی MonoChat سے سائن آؤٹ نہیں ہوتا۔

اپنی ترتیب جانچیں​

  1. سائن اِن صفحہ کھولیں اور SSO بٹن پر کلک کریں۔ اپنے IdP میں سائن اِن کریں؛ پاپ اَپ بند ہو جاتا ہے اور آپ MonoChat میں سائن اِن ہو جاتے ہیں۔
  2. ایسے شخص سے سائن اِن کریں جس کا ابھی MonoChat اکاؤنٹ نہ ہو، اور تصدیق کریں کہ اکاؤنٹ بن گیا (یا مسترد ہوا، اگر آپ نے autoCreateAccounts آن نہیں کیا)۔
  3. اگر آپ نے allowedEmailDomains سیٹ کیا ہے تو کسی اور ڈومین کے شخص سے کوشش کریں اور تصدیق کریں کہ سائن اِن مسترد ہوا۔
  4. اگر آپ نے public.auth.methods سیٹ کیا ہے تو تصدیق کریں کہ پاس ورڈ والا سائن اِن مسترد ہوتا ہے، اور روٹ سپر صارف اب بھی /auth/signin?fallback=1 پر سائن اِن کر سکتا ہے۔