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 ​