প্রমাণীকরণ স্ট্রিং তৈরি করুন (REST API)

সর্বশেষ আপডেট: ৩১ মার্চ, ২০২৫

কিছু REST এন্ডপয়েন্ট সংবেদনশীল অপারেশন যেমন অর্ডার দেওয়া বা ডিজিটাল সম্পদ উত্তোলনের অনুরোধ করার অনুমতি দেয়। এই ব্যক্তিগত এন্ডপয়েন্টগুলি শুধুমাত্র এনক্রিপ্ট করা অনুরোধের মাধ্যমে কল করা যেতে পারে এবং প্রতিটি অনুরোধে একটি প্রমাণীকরণ স্ট্রিং (authent) অন্তর্ভুক্ত করা আবশ্যক। authent নিম্নলিখিত ইনপুটগুলি থেকে গণনা করা হয়:

পোস্টডেটা

postData হল "&" এর একটি সংযোজন যা <argument>=<value> ফর্মের এবং প্রতিটি REST এন্ডপয়েন্টের জন্য নির্দিষ্ট।

উদাহরণ

এন্ডপয়েন্ট অর্ডারবুক পরিচালনা করতে আপনি fi_xbtusd_180615 মান সহ আর্গুমেন্ট প্রতীকটি বেছে নিন। postData তখন symbol=fi_xbtusd_180615 দ্বারা দেওয়া হয়।

v3 এন্ডপয়েন্টগুলির জন্য প্রমাণীকরণ প্রবাহ আপডেট করুন: 2024 সালের 20 ফেব্রুয়ারি থেকে, সর্বোত্তম অনুশীলনগুলির সাথে সামঞ্জস্য রাখতে এবং উচ্চতর নিরাপত্তা মান নিশ্চিত করতে, আমরা আমাদের /derivatives/* (v3) এন্ডপয়েন্টগুলির জন্য প্রমাণীকরণ প্রবাহ আপডেট করতে যাচ্ছি। (বিস্তারিত নিচে)

পোস্টডেটা জেনারেশন পরিবর্তন:


- প্রকাশের আগে: Authent জেনারেশনের জন্য ব্যবহারকারীদের url-এনকোডিং করার আগে ক্যোয়ারী স্ট্রিং প্যারামিটারগুলি হ্যাশ করতে হত, যেমন, `greeting=hello world`।


- প্রকাশের পরে: প্রমাণীকরণ প্রক্রিয়ার জন্য এখন অনুরোধে প্রদর্শিত সম্পূর্ণ, url-এনকোড করা URI উপাদান হ্যাশ করতে হবে, যেমন, `greeting=hello%20world`। এই পদ্ধতি নিরাপত্তা বাড়ায় এবং সর্বোত্তম অনুশীলনগুলির সাথে সামঞ্জস্যপূর্ণ।
এই আপডেটটি v3 batchorder এন্ডপয়েন্টের জন্য বিশেষভাবে প্রাসঙ্গিক, যা তার ক্যোয়ারী প্যারামিটারে একটি JSON বডি গ্রহণ করে।


পূর্ববর্তী সামঞ্জস্যতা এবং ভবিষ্যতের পরিকল্পনা:


আপাতত, এই পরিবর্তনটি পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্যপূর্ণ। প্ল্যাটফর্মটি উপরে বর্ণিত উভয় পোস্টডেটা জেনারেশন পদ্ধতিই গ্রহণ করবে। তবে, আমরা সর্বোচ্চ নিরাপত্তা মান বজায় রাখার জন্য ভবিষ্যতে পুরানো পদ্ধতি (ডিকোড করা ক্যোয়ারী স্ট্রিং প্যারামিটার হ্যাশ করা) পর্যায়ক্রমে বন্ধ করার লক্ষ্য রাখি। এই পরিবর্তনের আগে আমরা পর্যাপ্ত নোটিশ দেব এবং সকল ব্যবহারকারীকে যত তাড়াতাড়ি সম্ভব নতুন পদ্ধতিতে স্থানান্তরিত হতে উৎসাহিত করব যাতে নিরবচ্ছিন্ন পরিষেবা ধারাবাহিকতা নিশ্চিত হয়।

ননস

nonce হল একটি ক্রমাগত ক্রমবর্ধমান পূর্ণসংখ্যা প্যারামিটার। একটি ভালো nonce হল আপনার সিস্টেমের সময়
মিলিসেকেন্ডে (স্ট্রিং ফরম্যাটে)। আমাদের সিস্টেম অল্প সময়ের জন্য ক্রমবিহীন nonces সহ্য করে। Nonce এর প্রয়োজন নেই।

উদাহরণ 1415957147987

অনেক প্রমাণীকরণ সমস্যা ভুল ননসের সাথে সম্পর্কিত। API কীগুলির একটি নতুন জোড়া স্বয়ংক্রিয়ভাবে ননস রিসেট করবে এবং এই সমস্যাগুলি সমাধান করবে।

এন্ডপয়েন্ট পাথ

endpointPath এটি এন্ডপয়েন্টের URL এক্সটেনশন।

উদাহরণ /api/v3/orderbook

API সিক্রেট

api_secret পূর্ববর্তী বিভাগে বর্ণিত হিসাবে প্রাপ্ত হয়।

উদাহরণ

rttp4AzwRfYEdQ7R7X8Z/04Y4TZPa97pqCypi3xXxAqftygftnI6H9yGV+O
cUOOJeFtZkr8mVwbAndU3Kz4Q+eG

এই ইনপুটগুলির উপর ভিত্তি করে, প্রমাণীকরণ (authent) নিম্নলিখিতভাবে গণনা করা প্রয়োজন:

  1. 1

    একত্রিত করুন

    postData

    +

    nonce

    +

    endpointPath

  2. 2

    ধাপ 1 এর ফলাফলকে SHA-256 অ্যালগরিদম দিয়ে হ্যাশ করুন

  3. 3

    আপনার api_secret Base64-ডিকোড করুন

  4. 4

    ধাপ 3 এর ফলাফল ব্যবহার করে ধাপ 2 এর ফলাফলকে HMAC-SHA-512 অ্যালগরিদম দিয়ে হ্যাশ করুন

  5. 5

    ধাপ 4 এর ফলাফলকে Base64-এনকোড করুন

উদাহরণ

নিম্নলিখিতটি জাভাতে প্রমাণীকরণের একটি বাস্তবায়ন দেখায়। বিভিন্ন প্রোগ্রামিং ভাষার সম্পূর্ণ কার্যকরী উদাহরণের জন্য, অতিরিক্ত সংস্থান বিভাগটি দেখুন। public static String getAuthent(String postData, String nonce, String endpointPath, String secretKeyBase64)
{
Mac mac512;
MessageDigest sha256;
try {
SecretKey secretKey = new SecretKeySpec 
(Base64.decode(secretKeyBase64.getBytes()), HMAC_SHA_512);
mac512 = Mac.getInstance(HMAC_SHA_512);
mac512.init(secretKey);
sha256 = MessageDigest.getInstance("SHA-256");
} catch (IOException e) {
...
} catch (InvalidKeyException e) {
...
} catch (NoSuchAlgorithmException e) {
...
} sha256.update(postData.getBytes());
sha256.update(nonce.getBytes());
sha256.update(endpointPath.getBytes());
mac512.update(sha256.digest());
return Base64.encodeBytes(mac512.doFinal()).trim();
}

আরও সাহায্যের প্রয়োজন?