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