Dasturchilar uchun · 10 daqДля разработчиков · 10 мин
Mars ID ni loyihangizga ulangПодключи Mars ID к своему проекту
Telegram orqali avtorizatsiya. 15 daqiqada. Parolsiz, registratsiyasiz — bitta bosish va foydalanuvchi tizimda.Авторизация через Telegram за 15 минут. Без паролей, без регистрации — один клик и пользователь в системе.
Foydalanuvchi haqida ma'lumotlarДанные пользователя
Mars ID foydalanuvchi tizimga kirganda JWT-token beradi. Ichida quyidagi ma'lumotlar bor:Когда пользователь логинится через Mars ID, ты получаешь JWT-токен с данными:
MaydonПоле
TavsifОписание
sub
Foydalanuvchi UUIDUUID пользователя
name
Ism (Telegram dan)Имя (из Telegram)
handle
Unikal nom, masalan azizУникальный хэндл, напр. aziz
role
student / mentor / admin
tg
Telegram ID
email
handle@marshub.uz
Qanday ishlaydiКак это работает
Cookie orqali SSOSSO через cookie
Foydalanuvchi Mars ID ga kirganda, brauzerga __mars_id cookie o'rnatiladi — butun .marshub.uz domenida. Sizning xizmatingiz bu cookie ni avtomatik oladi.Когда пользователь логинится через Mars ID, в браузер ставится cookie __mars_id на весь домен .marshub.uz. Твой сервис получает эту cookie автоматически.
👤
Foydalanuvchi saytingizga kiradiПользователь заходит на твой сайт
↓
🔍
Server __mars_id cookie ni tekshiradiСервер проверяет cookie __mars_id
↓
❌
Cookie yo'q? → id.marshub.uz/login ga yo'naltirishНет cookie? → Редирект на id.marshub.uz/login
↓
🤖
Telegram orqali kirish → cookie o'rnatiladiВход через Telegram → cookie установлен
↓
✅
Foydalanuvchi saytingizga qaytadi. Tayyor!Пользователь возвращается на твой сайт. Готово!
Usulni tanlangВыбери способ
3 ta ulash usuli3 способа подключения
JWT Cookie
OsonЛегко
*.marshub.uz dagi xizmatlar uchun. Cookie avtomatik keladi.Для сервисов на *.marshub.uz. Cookie приходит автоматически.
OAuth2 / OIDC
O'rtachaСредне
Tashqi xizmatlar uchun. Standart protokol.Для внешних сервисов. Стандартный протокол.
Caddy Forward Auth
KodsizБез кода
Statik saytlar uchun. Faqat sozlash — kodlash kerak emas.Для статических сайтов. Только настройка — код не нужен.
1-usul: JWT CookieСпособ 1: JWT Cookie
Node.js bilan ulashПодключение на Node.js
1
Paketlarni o'rnatingУстанови пакеты
npm install express jsonwebtoken cookie-parser
2
AUTH_SECRET ni olingПолучи AUTH_SECRET
Mars administratoridan AUTH_SECRET kalit so'zini oling. Uni .env faylga saqlang.Попроси у администратора Mars ключ AUTH_SECRET. Сохрани в .env файл.
algorithms: ['HS256'] — bu juda muhim! Agar ko'rsatmasangiz, tajovuzkor algoritmni almashtirishi va tokenni soxtalashtirishi mumkin.algorithms: ['HS256'] — это критически важно! Без явного указания алгоритма злоумышленник может подменить алгоритм и подделать токен.
▶Python (Flask) da ham ko'ringПример на Python (Flask)
Foydalanuvchining roli student, mentor yoki admin bo'lishi mumkin. Buni cheklash uchun:У пользователя роль student, mentor или admin. Чтобы ограничить доступ:
Rol tekshirishПроверка роли
// Faqat mentorlar va adminlar / Только менторы и админыfunctionrequireRole(...roles) {
return (req, res, next) => {
if (!roles.includes(req.user.role)) {
returnres.status(403).send('Ruxsat yo\'q');
}
next();
};
}
app.get('/admin',
requireAuth,
requireRole('mentor', 'admin'),
(req, res) =>res.send('Admin panel')
);
2-usul: OAuth2 / OIDCСпособ 2: OAuth2 / OIDC
Tashqi xizmatlar uchunДля внешних сервисов
Agar loyihangiz *.marshub.uz da emas — Mars ID ni OIDC Provider sifatida ishlatishingiz mumkin. Bu standart protokol, ko'pchilik freymvorklar qo'llab-quvvatlaydi.Если твой проект не на *.marshub.uz — используй Mars ID как OIDC Provider. Это стандартный протокол, который поддерживают большинство фреймворков.
1
Klientni ro'yxatdan o'tkazingЗарегистрируй клиент
Mars administratoriga murojaat qiling. Ular sizga client_id va client_secret berishadi.Обратись к администратору Mars. Он выдаст client_id и client_secret.
OIDC Discovery: ko'pchilik freymvorklar (Next-Auth, Django-Allauth, Passport.js) faqat https://id.marshub.uz issuer URL ni kiritishni talab qiladi — qolganini avtomatik topadi.OIDC Discovery: большинство фреймворков (Next-Auth, Django-Allauth, Passport.js) требуют только указать https://id.marshub.uz как issuer — остальное найдут автоматически.
Statik saytingiz bormi? Caddy server avtomatik himoyalaydi — bitta so'rov bilan.Есть статический сайт? Caddy защитит автоматически — одним запросом.
1
Saytni MarshHub ga deploy qilingЗадеплой сайт на MarshHub
npx marshub deploy
2
Administratorga yozingНапиши администратору
Sayt nomini va kirishi mumkin bo'lgan foydalanuvchilarning Telegram ID larini bering.Сообщи имя сайта и Telegram ID пользователей, которым нужен доступ.
3
Tayyor!Готово!
Endi ruxsatsiz foydalanuvchilar Mars ID login sahifasiga yo'naltiriladi.Теперь неавторизованные пользователи будут перенаправлены на страницу логина Mars ID.
🛡️
Forward Auth — Caddy har bir so'rovni tekshiradi: cookie bormi? Telegram ID ruxsat berilganlar ro'yxatidami? Agar yo'q — foydalanuvchini login sahifasiga yo'naltiradi.Forward Auth — Caddy проверяет каждый запрос: есть cookie? Telegram ID в списке доступа? Если нет — редирект на страницу логина.
DeployДеплой
MarshHub ga deploy qilishДеплой на MarshHub
Loyihangizni npx marshub deploy bilan bir buyruqda joylashtiring:Опубликуй проект одной командой через npx marshub deploy:
Birinchi marta? Avval npx marshub login buyrug'ini bajaring — Telegram orqali avtorizatsiya qilasiz. Keyin npx marshub deploy ishlaydi.Первый раз? Сначала выполни npx marshub login — авторизуешься через Telegram. После этого npx marshub deploy заработает.
DebuggingОтладка
Tekshirish va xatolarni topishПроверка и поиск ошибок
API
# Tokenni tekshirish / Проверить токен$curl https://id.marshub.uz/api/verify?token=TOKEN{"sub":"...","name":"Aziz","role":"student"}# O'z ma'lumotlaringiz / Свои данные (нужна cookie)$curl -b "__mars_id=TOKEN" https://id.marshub.uz/api/me{"id":"...","name":"Aziz","handle":"aziz"}# Health check$curl https://id.marshub.uz/health{"ok":true,"users":245}
FAQ
Ko'p beriladigan savollarЧастые вопросы
?
AUTH_SECRET ni qayerdan olaman?Где взять AUTH_SECRET?
Mars administratoriga murojaat qiling. Kalit hamma xizmatlar uchun umumiy — cookie ni serverdagi so'rovsiz tekshirish imkonini beradi.Обратись к администратору Mars. Ключ общий для всех сервисов — позволяет проверять cookie без запросов к Mars ID.
?
localhost da ishlayaptimi?Работает ли на localhost?
Cookie .marshub.uz domeniga o'rnatiladi, shuning uchun localhost da yo'q. Token ni brauzerdan nusxalang (DevTools → Cookies) va /api/verify?token=... orqali tekshiring.Cookie ставится на домен .marshub.uz, поэтому на localhost недоступна. Скопируй токен из браузера (DevTools → Cookies) и проверяй через /api/verify?token=....
?
Token muddati qachon tugaydi?Когда истекает токен?
30 kundan keyin. jwt.verify() xato qaytaradi — foydalanuvchini login sahifasiga yo'naltiring, Mars ID yangi token beradi.Через 30 дней. jwt.verify() выбросит ошибку — перенаправь на логин, Mars ID выдаст новый токен.
?
JavaScript cookie ni o'qiy oladimi?Может ли JavaScript читать cookie?
Yo'q. __mars_id — httpOnly cookie. Faqat server tomonda ishlaydi. Bu XSS hujumlardan himoya.Нет. __mars_id — httpOnly cookie. Работает только на сервере. Это защита от XSS-атак.
Deploy oldidan checklistЧеклист перед деплоем
✓
AUTH_SECRET .env faylda (kodda emas!)AUTH_SECRET в .env файле (не в коде!)
✓
Algoritm: faqat HS256Алгоритм: строго HS256
✓
Login ga redirect: ?next=URL bilanРедирект на логин: с ?next=URL
Rollar serverda tekshiriladi (frontendga ishonmang!)Роли проверяются на сервере (не доверяй фронтенду!)
🚀
Tayyor!Готово!
Endi sizning loyihangizda Mars ID avtorizatsiya ishlaydi. Foydalanuvchilar Telegram orqali kirishadi.Теперь в твоём проекте работает авторизация Mars ID. Пользователи входят через Telegram.