nobitex / docs-api

Nobitex Cryptocurrency Exchange Market API Documentation
https://apidocs.nobitex.ir
Apache License 2.0
57 stars 30 forks source link

[پشتیبانی]: کدشناسایی دوعاملی برای احراز هویت #238

Open mr-mr7 opened 6 months ago

mr-mr7 commented 6 months ago

هدف

احراز هویت از طریق api و دریافت توکن با وجود فعال بودن شناسایی دوعاملی توکن دریافتی نوبیتکس حداکثر 30 روز زمان انقضا داره و هر 30 روز یکبار باید بروزرسانی بشه من میخواستم عملیات بروزرسانی و دریافت توکن جدید رو داخل پس زمینه و جاب انجام بدم ولی برای اینکار نیاز به کدشناسایی دوعاملی هست که باید ادمین این کد از طریق google authenticator بخونه و وارد کنه ک بتونم اینکارو انجام بدم از طرفی چون این عملیات در پس زمینه انجام میشه نمیتونم کد دوعاملی رو از ادمین بگیرم ممنون میشم راهنمایی کنید باید چیکار کنم از زبان php و فریمورک laravel استفاده میکنم

محیط درخواست

نحوه درخواست

$data = [
    'username' => "u",
    'password' => "p",
    'remember' => true,
    'captcha' => 'api'
];
Http::withHeader('X-TOTP', 123456)->post('https://api.nobitex.ir/auth/login/', $data);

پاسخ دریافتی


[
"non_field_errors" => [
   0 => "Invalid OTP"
  ]
"code" => "InvalidOTP"
]

### اطلاعات تکمیلی
Mostafa-Abbasinejad commented 2 weeks ago

سلام و وقت بخیر؛

برای تولید کد TOTP (رمز یک‌بار مصرف مبتنی بر زمان) گوگل در PHP، می‌توانید از یک کتابخانه استفاده کنید که الگوریتم TOTP را مطابق با استاندارد RFC 6238 پیاده‌سازی می‌کند. اپلیکیشن Google Authenticator از این استاندارد استفاده می‌کند که بر اساس یک کلید مشترک و زمان فعلی کار می‌کند.

یک کتابخانه محبوب برای این کار در PHP "PHPGangsta/GoogleAuthenticator" است که می‌توانید آن را با استفاده از Composer نصب کنید.

مراحل تولید کد TOTP گوگل در PHP

  1. نصب کتابخانه Google Authenticator: کتابخانه را با استفاده از Composer نصب کنید: composer require sonata-project/google-authenticator
  2. تولید کد TOTP: از کلاس GoogleAuthenticator این کتابخانه برای تولید کد TOTP استفاده کنید.

مثال

<?php
require 'vendor/autoload.php'; // اضافه کردن Autoloader Composer

use Sonata\GoogleAuthenticator\GoogleAuthenticator;

function getGoogleTotpCode($secret) {
    // ساخت یک نمونه از GoogleAuthenticator
    $gAuth = new GoogleAuthenticator();

    // تولید کد TOTP
    $totpCode = $gAuth->getCode($secret);

    return $totpCode;
}

// روش استفاده:
$secret = 'YOUR_SECRET_KEY'; // این رشته رو با کدی که موقع ایجاد شناسایی دو عاملی از نوبیتکس گرفتین جایگزین کنین
$totpCode = getGoogleTotpCode($secret);

echo "کد TOTP شما: " . $totpCode;

توضیحات: کلید مخفی (Secret Key): متغیر secret کلید مخفی شماست که باید به صورت base32-encoded باشد. این کلید باید همان کلیدی باشد که هنگام تنظیم اپلیکیشن Google Authenticator در نوبیتکس استفاده شده است. این کلید بین کلاینت (اپلیکیشن Google Authenticator) و سرور نوبیتکس به اشتراک گذاشته شده. کلاس GoogleAuthenticator: کلاس GoogleAuthenticator در این کتابخانه متد getCode() را ارائه می‌دهد که کد TOTP فعلی را بر اساس کلید مخفی و زمان فعلی تولید می‌کند. کد TOTP: کد تولید شده برای یک دوره زمانی کوتاه (معمولاً ۳۰ ثانیه) معتبر است.

موفق باشید