টোকেন অ্যাক্সেসের মেয়াদ কেন শেষ হবে?


209

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

আমার প্রশ্ন অ্যাক্সেস টোকেনের মেয়াদ শেষ হওয়ার উদ্দেশ্য কী? রিফ্রেশ টোকেনের পরিবর্তে কেন কেবল দীর্ঘস্থায়ী অ্যাক্সেস টোকেন থাকতে পারে না?

এছাড়াও, কি রিফ্রেশ টোকেনটির মেয়াদ শেষ হবে?

গুগল OAuth2 কর্মপ্রবাহের আরও তথ্যের জন্য গুগল API গুলি অ্যাক্সেস করতে OAuth 2.0 ব্যবহার করে দেখুন Using

উত্তর:


226

এটি অত্যন্ত বাস্তবায়ন নির্দিষ্ট, তবে সাধারণ ধারণাটি সরবরাহকারীদের দীর্ঘমেয়াদী রিফ্রেশ টোকেন সহ স্বল্পমেয়াদী অ্যাক্সেস টোকেন দেওয়ার অনুমতি দেয়। কেন?

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

4
দুটি প্রশ্ন: 1) মোবাইল অ্যাপ্লিকেশনগুলির ক্ষেত্রে, ক্লায়েন্টের প্রমাণীকরণের প্রয়োজনীয়তা কি এটিকে আরও শক্তিশালী করে তোলে? কারণ ক্লায়েন্ট_সেসরেট অ্যাপ্লিকেশন উত্স কোডের একটি অংশ, তাই এটি মোটেই গোপন নয়। ধরে নিই যে অ্যাক্সেস টোকেনটিও কেবল টিএলএসের মাধ্যমে ভাগ করা হয়েছে (এবং আপনার প্রথম বুলেট পয়েন্টটি প্রয়োগ হয় না) কোনও অতিরিক্ত সুরক্ষা আছে কি? 2) ধরে নিই যে এই সমস্ত আমাদের দৃশ্যে ধারণ করে (কেবল টিএলএস, কোনও স্ব-এনকোডেড অলক্ষণযোগ্য টোকেন নেই), মেয়াদ শেষ না হওয়া অ্যাক্সেস টোকেনগুলি দেওয়া কি ঠিক হবে?
থিলো

4
বহনকারী টোকেন কী এবং এটি রিফ্রেশ এবং টোকেন অ্যাক্সেসের সাথে কী করার আছে?
অ্যালিউরকোড

7
@ তিলো আমার ধারণা মতামতটি হল যে অ্যাক্সেস টোকেনগুলি প্রত্যাহারযোগ্য হবে না। যেমন ইরান উল্লেখ করেছে, এটি অনুরোধ করা পরিষেবার জন্য <em> কিছু ডাটাবেসে অ্যাক্সেস টোকেনটি সন্ধান না করে </ em> সিদ্ধান্ত নেওয়া সম্ভব করে। AFAICT, তাজা টোকেন এবং অ্যাক্সেস টোকেন পৃথক করার আসল সুবিধা।
অ্যালিওরকোড

5
অ্যাক্সেস (বহনকারী?) কীভাবে টোকেন স্বল্পস্থায়ী? যদি আমি একটি মেয়াদোত্তী ধারক টোকেনের সাথে একটি অনুরোধ জানাই তবে রিফ্রেশ টোকনটি একটি নতুন বাহক টোকেনকে ফিরিয়ে দেবে। তেমনি, আমি যদি তাদের কুকিগুলি থেকে কারও টোকেন চুরি করি এবং সেই টোকেনটি দিয়ে আমার নিজের কুকিকে ফাঁকি দেয় তবে আমি এটি সার্ভারে প্রেরণ করি, এটি রিফ্রেশ হবে এবং আমাকে একটি নতুন প্রেরণ করবে। কী থামবে? আইপি ঠিকানা বা এমনকি ম্যাক বলবেন না, কারণ এটি অযৌক্তিক।
সুমায়রে

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

33

কয়েকটি দৃশ্য টোকেন অ্যাক্সেস এবং রিফ্রেশ করার উদ্দেশ্য এবং ইঞ্জিনিয়ারিং ট্রেড-অফগুলিকে একটি oauth2 (বা অন্য কোনও লেখক) সিস্টেম ডিজাইনের ক্ষেত্রে চিত্রিত করতে সহায়তা করতে পারে:

ওয়েব অ্যাপের দৃশ্যপট

ওয়েব অ্যাপের দৃশ্যে আপনার কাছে কয়েকটি বিকল্প রয়েছে:

  1. আপনার নিজের সেশন ম্যানেজমেন্ট থাকলে আপনার সেশন স্টেট সার্ভিসে সেশন স্টেট আইডির বিপরীতে অ্যাক্সেস_ টোকেন এবং রিফ্রেশ_ টোকেন উভয়টি সংরক্ষণ করুন। যখন কোনও পৃষ্ঠার ব্যবহারকারীর দ্বারা অনুরোধ করা হয়েছে যা আপনাকে সংস্থানটি অ্যাক্সেস করতে হবে অ্যাক্সেস_ টোকেনটি ব্যবহার করে এবং অ্যাক্সেস_ টোকেনের মেয়াদ শেষ হয়ে গেলে নতুনটি পেতে রিফ্রেশ_ টোকেন ব্যবহার করুন।

আসুন কল্পনা করুন যে কেউ আপনার অধিবেশন হাইজ্যাক করার ব্যবস্থা করে। কেবলমাত্র আপনার পৃষ্ঠাগুলির জন্য অনুরোধ করা সম্ভব।

  1. আপনার যদি সেশন ম্যানেজমেন্ট না থাকে তবে এক্সেস_ টোকেনটি একটি কুকিতে রাখুন এবং এটি একটি সেশন হিসাবে ব্যবহার করুন। তারপরে, যখনই ব্যবহারকারী আপনার ওয়েব সার্ভার থেকে পৃষ্ঠাগুলির জন্য অনুরোধ করে অ্যাক্সেস_ টোকেন প্রেরণ করে। আপনার অ্যাপ্লিকেশন সার্ভারটি প্রয়োজন হলে অ্যাক্সেস_ টোকেনটিকে রিফ্রেশ করতে পারে।

1 এবং 2 তুলনা:

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

যে কোনও উপায়ে রিফ্রেশ_ টোকেন এবং ক্লায়েন্টেড / সিক্রেট কেবলমাত্র সার্ভারের কাছেই জানা যায় এটি ওয়েব ব্রাউজার থেকে দীর্ঘমেয়াদী অ্যাক্সেস অর্জনকে অসম্ভব করে তোলে।

আসুন কল্পনা করুন যে আপনি oauth2 বাস্তবায়ন করছেন এবং অ্যাক্সেস টোকেনে একটি দীর্ঘ সময়সীমা সেট করেছেন:

1) অ্যাপ্লিকেশন সার্ভারে লুকানো থাকায় একটি স্বল্প এবং দীর্ঘ অ্যাক্সেস টোকেনের মধ্যে এখানে খুব বেশি পার্থক্য নেই। 2) কেউ ব্রাউজারে অ্যাক্সেস_ টোকেন পেতে পারে এবং তারপরে এটি দীর্ঘ সময়ের জন্য সরাসরি ব্যবহারকারীর সংস্থানগুলিতে অ্যাক্সেস করতে ব্যবহার করতে পারে।

মোবাইলের দৃশ্যপট

মোবাইলে এমন বেশ কয়েকটি দৃশ্য রয়েছে যা আমি জানি:

  1. ডিভাইসে ক্লায়েন্টেড / গোপন সঞ্চয় করুন এবং ব্যবহারকারীর সংস্থানগুলিতে অ্যাক্সেস পাওয়ার জন্য ডিভাইসকে অর্কেস্টেট করুন।

  2. ক্লায়েন্টেড / সিক্রেট রাখতে এবং এটি অর্কেস্ট্রেশনটি করতে একটি ব্যাকএন্ড অ্যাপ্লিকেশন সার্ভার ব্যবহার করুন। একধরণের সেশন কী হিসাবে অ্যাক্সেস_ টোকেনটি ব্যবহার করুন এবং এটি ক্লায়েন্ট এবং অ্যাপ্লিকেশন সার্ভারের মধ্যে পাস করুন।

তুলনা 1 এবং 2

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

মেয়াদোত্তীর্ণ দৈর্ঘ্য

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

গুগলের মতো কিছু লোক রিফ্রেশ_ টোকেনের মেয়াদ শেষ করে না। কিছু স্ট্যাকফ্লো করতে চান। মেয়াদোত্তীর্ণের সিদ্ধান্তটি ব্যবহারকারীর স্বাচ্ছন্দ্য এবং সুরক্ষার মধ্যে বাণিজ্য off রিফ্রেশ টোকেনটির দৈর্ঘ্য ব্যবহারকারীর রিটার্ন দৈর্ঘ্যের সাথে সম্পর্কিত, অর্থাৎ ব্যবহারকারী আপনার অ্যাপ্লিকেশনটিতে কত ঘন্টার জন্য রিফ্রেশ সেট করুন। যদি রিফ্রেশ টোকেনটি কেবল বাতিল হয় কেবলমাত্র তা প্রত্যাহার করা হয় is সাধারণত, একটি লগ অন প্রত্যাহার করবে না।

আশা করি বরং দৈর্ঘ্যের পোস্টটি কার্যকর।


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

সত্য, তবে তারপরে কেবলমাত্র অন্তর্নিহিত টোকনে সম্পূর্ণ অ্যাক্সেস না করে কেবলমাত্র আপনি সরবরাহ করেন সেগুলিতেই তাদের কাছে অ্যাক্সেস রয়েছে। অর্থাৎ তারা আপনার অ্যাপ্লিকেশনটির ছদ্মবেশ তৈরি করতে পারে। প্রায়শই, টোকেনগুলিতে বিস্তৃত অনুমতি থাকতে পারে, যেখানে আপনার কেবল একটি উপসেট প্রয়োজন। ব্যাকএন্ডে টোকেন ধরে রাখা আরও বাধা দেয়, আপনার যদি এটির দরকার হয়।
এড সাইকস

11

অন্যান্য প্রতিক্রিয়া ছাড়াও:

একবার প্রাপ্ত হয়ে গেলে, অ্যাক্সেস টোকেনগুলি সাধারণত ক্লায়েন্টদের সুরক্ষিত রিসোর্স সার্ভারগুলিতে প্রতিটি অনুরোধের সাথে প্রেরণ করা হয়। এটি টোকেন চুরি এবং পুনরায় প্লে করার অ্যাক্সেসের ঝুঁকি প্ররোচিত করে (অবশ্যই ধরে নেওয়া যে অ্যাক্সেস টোকেনগুলি "বেয়ারার" প্রকারের (প্রাথমিক আরএফসি 6750 হিসাবে সংজ্ঞায়িত) রয়েছে।

বাস্তব জীবনে এই ঝুঁকিগুলির উদাহরণ:

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

  • অ্যাক্সেস টোকেনগুলি এইচটিটিপি ট্রেস, লগ ইত্যাদিতে প্রদর্শিত হতে পারে যা রিসোর্স সার্ভার বা ক্লায়েন্টগুলিতে ডায়াগনস্টিক উদ্দেশ্যে বৈধভাবে সংগ্রহ করা হয়। এই ট্রেসগুলি সর্বজনীন বা আধা-পাবলিক জায়গাগুলিতে (বাগ ট্রেসারস, পরিষেবা-ডেস্ক ইত্যাদি) বিনিময় করা যায়।

  • ব্যাকএন্ড আরএস অ্যাপ্লিকেশনগুলি কম বা বেশি বিশ্বাসযোগ্য তৃতীয় পক্ষগুলিতে আউটসোর্স করা যেতে পারে।

অন্যদিকে রিফ্রেশ টোকন কেবলমাত্র তারের উপর দিয়ে দু'বার প্রেরণ করা হয় এবং সর্বদা ক্লায়েন্ট এবং অনুমোদনের সার্ভারের মধ্যে: একবার ক্লায়েন্ট দ্বারা প্রাপ্ত হয়ে গেলে এবং একবার রিফ্রেশ করার সময় ক্লায়েন্ট দ্বারা ব্যবহৃত হয়ে গেলে (পূর্ববর্তী রিফ্রেশকে কার্যকরভাবে "মেয়াদোত্তীর্ণ" হয়) টোকেন). এটি ইন্টারসেপশন এবং পুনরায় প্লে করার জন্য মারাত্মকভাবে সীমাবদ্ধ সুযোগ।

শেষ চিন্তা, রিফ্রেশ টোকেনগুলি আপোষকৃত ক্লায়েন্টদের বিরুদ্ধে খুব সামান্য সুরক্ষা সরবরাহ করে।


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

9

এটি মূলত একটি সুরক্ষা ব্যবস্থা। যদি আপনার অ্যাপটি আপোস করা হয় তবে আক্রমণকারীটির কেবল স্বল্প-স্থায়ী অ্যাক্সেস টোকনে অ্যাক্সেস থাকবে এবং নতুন কোনও উত্পন্ন করার উপায় নেই।

রিফ্রেশ টোকেনগুলির মেয়াদও শেষ হয়ে যায় তবে তারা অ্যাক্সেস টোকেনের চেয়ে অনেক বেশি সময় বেঁচে থাকার কথা।


45
তবে কি আক্রমণকারীটিরও রিফ্রেশ টোকনে অ্যাক্সেস থাকবে না? এবং নতুন অ্যাক্সেস টোকেন তৈরি করতে সেটিকে ব্যবহার করতে পারেন?
লেভি

10
@ লেলি, হ্যাকার নতুন অ্যাক্সেস টোকেন তৈরি করতে রিফ্রেশ টোকেন ব্যবহার করতে পারবেন না কারণ নতুন অ্যাক্সেস টোকেন তৈরি করতে রিফ্রেশ টোকেনের সাথে ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট প্রয়োজন।
স্পাইক

9
@ স্পাইক ট্রু, তবে অ্যাপটিতে ক্লায়েন্টের আইডি এবং গোপনীয়তা এম্বেড করা যায় না?
অ্যান্ডি

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

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