"রিফ্রেশ টোকেন" এর উদ্দেশ্য কী?


96

আমার কাছে এমন একটি প্রোগ্রাম রয়েছে যা ইউটিউব লাইভ স্ট্রিমিং এপিআইয়ের সাথে সংহত করে। এটি টাইমারগুলিতে চালিত হয়, তাই রিফ্রেশ টোকন সহ প্রতি 50 মিনিটে একটি নতুন অ্যাক্সেস টোকেন আনার জন্য প্রোগ্রাম করা আমার পক্ষে তুলনামূলক সহজ। আমার প্রশ্ন, কেন?

আমি যখন ইউটিউব দিয়ে প্রমাণীকরণ করেছি, এটি আমাকে একটি রিফ্রেশ টোকন দিয়েছে। আমি তখন প্রায় এক ঘন্টা একবার নতুন অ্যাক্সেস টোকেন পেতে এই রিফ্রেশ টোকেনটি ব্যবহার করি। আমার কাছে যদি রিফ্রেশ টোকেন থাকে তবে আমি নতুন এক্সেস টোকন পেতে সর্বদা এটি ব্যবহার করতে পারি, কারণ এটি কখনই শেষ হয় না। শুরু থেকে আমাকে কেবল অ্যাক্সেস টোকেন দেওয়ার এবং পুরো রিফ্রেশ টোকন সিস্টেমকে বিরক্ত না করার চেয়ে কীভাবে এটি নিরাপদ তা আমি দেখতে পাচ্ছি না।



4
অ্যাক্সেস টোকেন বহনকারী টোকেন হয়। মানে অন্য কোনও সনাক্তকরণের প্রয়োজন নেই, এবং আপনার ছদ্মবেশ তৈরি করার জন্য অ্যাক্সেস টোকেনের প্রয়োজনীয় সমস্ত কিছুই। এ কারণে তাদের সর্বদা স্বল্পস্থায়ী হওয়া উচিত। অন্যদিকে রিফ্রেশ টোকেন বহনকারী টোকেন নেই। নতুন অ্যাক্সেস টোকেন পেতে আপনি যখন ইউটিউবে একটি রিফ্রেশ টোকেন প্রেরণ করেন, আপনাকে ক্লায়েন্ট_আইডি এবং ক্লায়েন্ট_সেসরেটও পাঠাতে হবে। এ কারণে, রিফ্রেশ টোকেন দীর্ঘকাল বেঁচে থাকতে পারে কারণ রিফ্রেশ টোকেন এবং ক্লায়েন্ট_সেক্রেট উভয়ই আপোষহীন হবে।
জারহালি

উত্তর:


90

মূলত, রিফ্রেশ টোকেনগুলি নতুন অ্যাক্সেস টোকেন পেতে ব্যবহৃত হয়।

এই দুটি টোকেনকে স্পষ্টভাবে পার্থক্য করতে এবং মিশ্রিত হওয়া এড়াতে, OAuth 2.0 অনুমোদনের ফ্রেমওয়ার্কে এখানে তাদের ফাংশন দেওয়া হয়েছে :

  • অ্যাক্সেস টোকেনগুলি তৃতীয় পক্ষের ক্লায়েন্টগুলিকে সংস্থান মালিকের অনুমোদনের মাধ্যমে একটি অনুমোদন সার্ভার দ্বারা জারি করা হয়। ক্লায়েন্টটি রিসোর্স সার্ভার দ্বারা হোস্ট করা সুরক্ষিত সংস্থানগুলি অ্যাক্সেস করতে অ্যাক্সেস টোকেন ব্যবহার করে।
  • রিফ্রেশ টোকেনগুলি অ্যাক্সেস টোকেনগুলি পেতে ব্যবহৃত শংসাপত্র। রিফ্রেশ টোকেন ক্লায়েন্টকে অনুমোদন সার্ভার দ্বারা জারি করা হয় এবং যখন বর্তমান অ্যাক্সেস টোকেনটি অবৈধ হয়ে যায় বা মেয়াদ শেষ হয়ে যায় বা অভিন্ন বা সংকীর্ণ সুযোগ সহ অতিরিক্ত অ্যাক্সেস টোকেনগুলি পেতে তা ব্যবহার করতে ব্যবহৃত হয়।

এখন, কেন আপনি এখনও একটি রিফ্রেশ শুধু একটি অ্যাক্সেস টোকেন সুরক্ষিত পরিবর্তে টোকেনটি জারি হচ্ছে আপনার প্রশ্নের উত্তর দিতে, প্রধান ইন্টারনেট ইঞ্জিনিয়ারিং টাস্ক ফোর্স দ্বারা উপলব্ধ কারণ রিফ্রেশ টি টোকেন হল:

একটি সুরক্ষার কারণ রয়েছে, refresh_tokenকেবলমাত্র অনুমোদনের সার্ভারের সাথে এক্সচেঞ্জ করা হয় যেখানে access_tokenরিসোর্স সার্ভারের সাথে এক্সচেঞ্জ হয়। এটি দীর্ঘমেয়াদী অ্যাক্সেস_ টোকেনটি "এক ঘন্টার জন্য অ্যাক্সেস টোকেন গুড, এক বছরের জন্য রিফ্রেশ টোকেন সহ ভাল বা ভাল-অব-রিভ্রয়েড" বনাম "একটি অ্যাক্সেস টোকেনকে রিফ্রেশ ছাড়াই প্রত্যাহার করার ঝুঁকি হ্রাস করে টোকেন."

OAuth 2.0 প্রবাহের আরও বিশদ এবং সম্পূর্ণ তথ্যের জন্য, দয়া করে নীচের উল্লেখগুলিতে যাওয়ার চেষ্টা করুন:


4
রিফ্রেশ টোকেনও কি নতুন রিফ্রেশ টোকেন পেতে সহায়তা করবে?
গেরম্যান

4
কেন এটি একটি নতুন স্বল্প-মেয়াদী অ্যাক্সেস_ টোকেনটি শেষ হয় যখন তা অর্জন করবেন না? দীর্ঘমেয়াদী রিফ্রেশ_ টোকেন কেন আপনি যদি কোনওভাবেই নতুন অ্যাক্সেস_ টোকেনের জন্য সার্ভারটির অনুরোধ করতে চান? বা এটি সত্য যে একটি রিফ্রেশ_ টোকেনের সাথে আমার জীবন্ত পরিচয় প্রদানকারী কুকি বজায় রাখার দরকার নেই এবং এটি কুকি দীর্ঘ চলে যাওয়ার পরেও রিফ্রেশ_ টোকেনের উপর ভিত্তি করে নতুন অ্যাক্সেস_ টোকেন জারি করে এবং যদি তারা একটি পেতে চায় তবে ব্যবহারকারীকে তার শংসাপত্রগুলি প্রবেশ করতে হবে নতুন অ্যাক্সেস_ টোকেন?
জাস্টামার্টিন

4
@ জুস্টামার্টিন ওআউথ 2 ক্লায়েন্ট হিসাবে রিফ্রেশ টোকেন ছাড়াই আমাকে আবার অন্য অনুমোদনের প্রবাহটি চালু করতে হবে (ব্যবহারকারীর 'লগইন' করতে এবং আবার আমাকে অনুমতি দেওয়া হবে) যাতে অন্য অ্যাক্সেস টোকেন পেতে পারে। রিফ্রেশ টোকেনগুলি এই প্রযোজনার প্রমান হিসাবে এই প্রয়োজনীয়তাটিকে বাইপাস করুন যে আমি, ক্লায়েন্ট হিসাবে ইতিমধ্যে ব্যবহারকারীর অ্যাক্সেস টোকেনের অনুরোধের অনুমতি পেয়েছি।
জারহালি

রিফ্রেশ টোকনে অ্যাক্সেস টোকেনের মতো অভিন্ন বা একই ডেটা থাকতে পারে? যেহেতু রিফ্রেশ টোকেনের প্রধান ব্যবহারটি হ'ল ব্যবহারকারীদের অভিজ্ঞতা স্বাচ্ছন্দ্য করতে এবং কোনও সম্পদে হ্যাকারদের অ্যাক্সেসের সময় সীমাবদ্ধ করা।
ডেভিসটোবি অ্যালেক্স

8

@ তায়াম এসও পোস্টের কথা উল্লেখ করেছেন কেন OAuth v2 টোকেন অ্যাক্সেস এবং রিফ্রেশ উভয়ই আছে? তবে আমি সেখানে অন্য উত্তরটি পছন্দ করি: https://stackoverflow.com/a/12885823/254109

টিএল; ডিআর refresh_token বর্ধিত সুরক্ষা নিয়ে আসে না। এটি স্কেলাবিলিটি এবং পারফরম্যান্স উন্নতির উদ্দেশ্যে for তারপরে, access_tokenকিছু দ্রুত, অস্থায়ী স্টোরেজ (মেমরির মতো) এ সঞ্চয় করা যেতে পারে। এটি অনুমোদন এবং সংস্থান সার্ভার বিভাজনও মঞ্জুরি দেয়।


4
সুরক্ষা কারণ ছাড়া, @ তায়ামের উল্লেখ অনুসারে: "রিফ্রেশ_ টোকেন কেবলমাত্র অনুমোদনের সার্ভারের সাথেই বিনিময় হয় যেখানে অ্যাক্সেস টোকেনটি রিসোর্স সার্ভারের সাথে বিনিময় হয়"
হুইজ

এটি কেবলমাত্র আরও সুরক্ষিত যদি আমরা ধরে নিই যে অনুমোদন সার্ভারটি কোনওভাবে উত্স সার্ভার হিসাবে সুরক্ষিত। যদি এটি না হয় তবে এটি আসলে কম সুরক্ষিত। এটি রিফ্রেশ টোকেন আপোষযুক্ত আমি নতুন এক্সেস টোকেন পেতে কেবল এটি ব্যবহার করতে পারি can
আরনো ভ্যান লাইশাউট

6

রিফ্রেশ টোকেন কমপক্ষে দুটি উদ্দেশ্যে পরিবেশন করে। প্রথমত, রিফ্রেশ টোকেন হ'ল এক প্রকার 'প্রমাণ' যা ইতিমধ্যে একটি OAuth2 ক্লায়েন্ট রয়েছে তাদের ডেটা অ্যাক্সেস করার জন্য ব্যবহারকারীদের কাছ থেকে অনুমতি পেয়েছে এবং তাই ব্যবহারকারীকে পুরো OAuth2 প্রবাহের বাইরে যাওয়ার প্রয়োজন ছাড়াই আবার নতুন অ্যাক্সেস টোকেনের জন্য অনুরোধ করতে পারে। এবং দ্বিতীয়ত, দীর্ঘায়িত অ্যাক্সেস টোকেনের তুলনায় এটি সুরক্ষার পুরো প্রবাহকে বাড়িয়ে তুলতে সহায়তা করে। আমি এই দুটি বিষয়ই আরও কিছুটা স্পর্শ করব।

ব্যবহারকারীকে বিরক্ত না করার উপায় হিসাবে টোকেনকে রিফ্রেশ করুন

প্রথম উদাহরণ সম্পর্কে একটি উদাহরণ দিয়ে কথা বলা যাক। মনে করুন আপনি, একজন ব্যবহারকারী, তৃতীয় পক্ষের ক্লায়েন্ট ওয়েব অ্যাপ্লিকেশন ব্যবহার করছেন যা আপনার ইউটিউব অ্যাকাউন্ট ডেটার সাথে ইন্টারেক্ট করতে চায়। আপনি একবার আপনার ইউটিউব ডেটা ব্যবহারের জন্য ক্লায়েন্ট অ্যাপ্লিকেশনটিকে অনুমতি দিলে, আপনি কি ক্লায়েন্ট অ্যাপ্লিকেশনটি আপনাকে অনুমতি দেওয়ার জন্য অনুরোধ করতে চান? আবারএটির ইউটিউব টোকেনের মেয়াদ কখন শেষ? ইউটিউব টোকেনের মেয়াদ শেষ হওয়ার সময়টি খুব কম কিছু ছিল, যেমন 5 মিনিটের মতো happens ক্লায়েন্ট অ্যাপ্লিকেশন আপনাকে কমপক্ষে প্রতি 5 মিনিটে আপনার অনুমতি দেওয়ার জন্য অনুরোধ করাতে একটু বিরক্তিকর হবে! OAuth2 এই 'সমস্যার' জন্য যে সমাধানটির প্রস্তাব দেয় তা হ'ল রিফ্রেশ টোকেন। রিফ্রেশ টোকেন ব্যবহার করে, অ্যাক্সেস টোকেন অল্প সময়ের জন্য থাকতে পারে (যা অ্যাক্সেস টোকেন ফাঁস হয়ে যায় বা কোনওভাবে চুরি হয়ে গেলে কাঙ্ক্ষিত) এবং রিফ্রেশ টোকেন দীর্ঘ (ইআর) লাইভ থাকতে পারে, ক্লায়েন্টকে নতুন অ্যাক্সেস পাওয়ার সুযোগ দেয় টোকেন যখন ব্যবহারকারীর অনুমতি (আবার) প্রয়োজন ছাড়াই মেয়াদ শেষ হয়।

তবে কেন রিফ্রেশ টোকেন? যদি বিন্দুটি যদি অনুমতিগুলির অনুরোধের সাথে ব্যবহারকারীকে ত্রুটিযুক্ত না করা হয়, তবে ক্লায়েন্টটি কেবল "আরে, অনুমোদনের সার্ভার, আমি আরও একটি অ্যাক্সেস টোকেন চাই না কেন" এখন বলতে পারি না! "! বা, "আরে অনুমোদনের সার্ভার, এখানে আমার মেয়াদ উত্তীর্ণ টোকেন, আমাকে একটি নতুন দিন!"! ওয়েল, রিফ্রেশ টোকেন এক ধরণের "প্রুফ" হিসাবে কাজ করে যা ক্লায়েন্টকে কোনও কোনও মৌলিক সময়ে সময়ে ব্যবহারকারীর দ্বারা অ্যাক্সেস দেয়। এই "প্রমাণ "টি রিফ্রেশ টোকেন আকারে ডিজিটালভাবে অনুমোদনের সার্ভার দ্বারা স্বাক্ষরিত হয়েছে। ক্লায়েন্টকে রিফ্রেশ টোকন উপস্থাপনের মাধ্যমে, অনুমোদনের সার্ভারটি যাচাই করতে পারে যে ক্লায়েন্টটি অতীতে এক পর্যায়ে প্রাপ্ত হয়েছিল, ব্যবহারকারীর কাছ থেকে অনুমতি পেয়েছিল এবং ক্লায়েন্টকে আবার ব্যবহারকারীকে অনুরোধ করতে হবে না।

সুরক্ষা বাড়ানোর উপায় হিসাবে টোকেনকে রিফ্রেশ করুন

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

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

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


5

"সুতরাং আমি দেখতে পাচ্ছি না যে এটি আমাকে আরম্ভ থেকে কেবল অ্যাক্সেস টোকন দেওয়ার এবং পুরো রিফ্রেশ টোকন সিস্টেমের সাথে বিরক্ত করার চেয়ে কীভাবে নিরাপদ।" আমি একই প্রশ্ন নিয়ে সংগ্রাম করেছি। সংক্ষিপ্ত উত্তর হ'ল শংসাপত্রগুলির মেয়াদ উত্তীর্ণ হয়নি তা নিশ্চিত করার জন্য রিফ্রেশ টোকেন প্রয়োজনীয়।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.