স্কিপ করে মূল কন্টেন্ট এ যান

অন-প্রেমিস ইনস্টলেশনের জন্য সিঙ্গেল সাইন-অন

এই পেজটি অন-প্রেমিস 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 হলো IdP-এর ডিসকভারি ডকুমেন্টের issuer মান। সাধারণ রূপ:

আইডেন্টিটি প্রোভাইডার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.scopeMonoChat যে স্কোপগুলো চায়
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-এ সাইন ইন করতে পারেন।