Bỏ qua, đến nội dung

@digiforce-nc/plugin-auth-telegram

Plugin xác thực qua Telegram Login — hỗ trợ hai luồng: Login Widget (cho web) và Web App (cho Telegram Mini Apps). Sử dụng HMAC-SHA256 để verify dữ liệu từ Telegram, đảm bảo tính toàn vẹn.

Plugin này làm gì?

TelegramAuth kế thừa BaseAuth, triển khai xác thực qua Telegram Bot API. Plugin hỗ trợ hai cơ chế verify khác nhau: Login Widget dùng HMAC với bot token hash, Web App dùng HMAC với WebAppData key. Cả hai đều không yêu cầu OAuth redirect truyền thống.

Hai luồng xác thực

#LuồngKhi nào dùngVerify method
1Login WidgetWeb browser — nút Telegram LoginHMAC-SHA256 với SHA256(bot_token)
2Web AppTelegram Mini App (WebApp)HMAC-SHA256 với HMAC("WebAppData", bot_token)

Luồng xác thực — Login Widget

Luồng xác thực — Web App

Cấu hình

Tham sốKiểuMô tả
telegram.botTokenstringBot Token từ @BotFather (server-side, không public)
public.botUsernamestringUsername của bot (không có @, dùng cho Login Widget)
telegram.httpbooleanDùng HTTP thay HTTPS cho redirect
telegram.portstringPort tùy chỉnh cho redirect URL
public.autoSignupbooleanTự tạo tài khoản nếu user chưa tồn tại

HMAC Verification

Login Widget — verify theo Telegram Login Widget docs:

data_check_string = "auth_date=...\nfirst_name=...\nid=...\nusername=..."
secret_key = SHA256(bot_token)
hash = HMAC_SHA256(secret_key, data_check_string)

Web App — verify theo Telegram Web App docs:

data_check_string = "auth_date=...\nquery_id=...\nuser=..."
secret_key = HMAC_SHA256("WebAppData", bot_token)
hash = HMAC_SHA256(secret_key, data_check_string)

API endpoints

EndpointQuyềnMô tả
telegram:redirectPublic (CORS)Login Widget callback — verify HMAC và tạo session
telegram:validatePublic (CORS)Web App validation — verify initData và tạo session

Cả hai endpoint đều bật CORS để hỗ trợ cross-origin requests từ Telegram Widget và Mini App.

Thành phần client

Thành phầnMô tả
TelegramLoginButtonWidget đăng nhập Telegram (dùng package telegram-login-button)
OptionsForm cấu hình Telegram auth trong Settings → Authentication

Dependencies

PackageVai trò
telegram-login-buttonReact component cho Telegram Login Widget
@digiforce-nc/authBase auth framework (peer)
@digiforce-nc/serverServer framework (peer)
@digiforce-nc/clientClient framework (peer)

Mục lục chi tiết