Орчин үеийн мэдээллийн системүүд хэрэглэгчдээс олон төрлийн програм, платформд нэвтрэх шаардлага тавьдаг болсон. Үүнтэй холбоотойгоор олон нууц үг санах, дахин дахин нэвтрэх нь хэрэглэгчдэд төвөгтэй, байгууллагад аюулгүй байдлын эрсдэл үүсгэдэг. Энэ асуудлыг шийдэх нэг чухал технологи бол SSO (Single Sign-On) юм.
SSO-ийн үндсэн ойлголт

Single Sign-On (SSO) гэдэг нь хэрэглэгч нэг удаа нэвтэрснээр олон өөр систем, аппликейшн, сервисүүдэд дахин нэвтрэх шаардлагагүйгээр хандах боломж олгодог баталгаажуулалтын механизм юм.
Жишээ нь:
Та Google аккаунтаараа нэвтэрсний дараа Gmail, Google Drive, YouTube зэрэг бүх үйлчилгээг дахин логин хийхгүй ашиглаж чаддаг. Энэ нь SSO-ийн бодит жишээ юм.
SSO хэрхэн ажилладаг вэ?

SSO нь ихэвчлэн дараах үндсэн бүрэлдэхүүн хэсгүүдтэй:
- Identity Provider (IdP)
Хэрэглэгчийн нэвтрэлтийг шалгаж баталгаажуулдаг төв сервер
(жишээ: Keycloak, Okta, Auth0) - Service Provider (SP)
Нэвтрэхийг шаардаж буй аппликейшн эсвэл систем - Authentication Token / Assertion
Хэрэглэгч баталгаажсан гэдгийг нотлох мэдээлэл
(JWT, SAML assertion гэх мэт)
Ажиллах дараалал:
- Хэрэглэгч системд нэвтрэх хүсэлт илгээнэ
- Service Provider хэрэглэгчийг Identity Provider руу шилжүүлнэ
- Хэрэглэгч IdP дээр нэг удаа логин хийнэ
- Баталгаажсан токен буцааж авна
- Бусад системүүд уг токеноор хэрэглэгчийг танина
SSO-д ашиглагддаг түгээмэл стандартууд
- OAuth 2.0 – Эрх олголтын стандарт (authorization)
- OpenID Connect (OIDC) – OAuth 2.0 дээр суурилсан authentication
- SAML 2.0 – XML суурьтай enterprise стандарт
- LDAP / Active Directory – Дотоод байгууллагын хэрэглээнд түгээмэл
SSO-ийн давуу талууд
✅ Хэрэглэгчийн хувьд
- Нэг л нууц үг санахад хангалттай
- Ашиглахад хурдан, хялбар
- Туршлага (UX) сайжирна
✅ Байгууллагын хувьд
- Аюулгүй байдлын удирдлага төвлөрнө
- Нууц үг мартах, reset хийх ачаалал багасна
- Хэрэглэгчийн хандалтыг нэг цэгээс хянах боломжтой
SSO-ийн сул тал, эрсдэл
- Single point of failure
Хэрэв IdP уналаа гэвэл бүх системд нэвтрэх боломжгүй болно - Аюулгүй байдлын өндөр шаардлага
Нэг аккаунт алдагдвал бүх системд нэвтрэх эрсдэлтэй - Зөв тохиргоо, хамгаалалт (MFA, rate limit) зайлшгүй шаардлагатай
SSO-г хаана ашигладаг вэ?
- Томоохон байгууллагын дотоод системүүд
- SaaS платформууд
- Их сургууль, банк, төрийн системүүд
- Microservice архитектуртай системүүд
Google OAuth тохиргоо
const express = require("express");
const { createProxyMiddleware } = require("http-proxy-middleware");
const jwt = require("jsonwebtoken");
const app = express();
const JWT_SECRET = "super-secret";
// 🔐 Auth middleware (SSO core)
function authMiddleware(req, res, next) {
const authHeader = req.headers.authorization;
if (!authHeader) {
return res.status(401).json({ message: "No token" });
}
const token = authHeader.split(" ")[1];
try {
const user = jwt.verify(token, JWT_SECRET);
req.user = user; // downstream руу дамжуулна
next();
} catch (err) {
return res.status(403).json({ message: "Invalid token" });
}
}
// Proxy to User Service
app.use(
"/users",
authMiddleware,
createProxyMiddleware({
target: "http://localhost:5001",
changeOrigin: true,
onProxyReq(proxyReq, req) {
proxyReq.setHeader("x-user-id", req.user.id);
proxyReq.setHeader("x-user-role", req.user.role);
},
})
);
// Proxy to Payment Service
app.use(
"/payments",
authMiddleware,
createProxyMiddleware({
target: "http://localhost:5002",
changeOrigin: true,
})
);
app.listen(3000, () => console.log("Gateway on 3000"));