OAuth v2 এর কেন টোকেন অ্যাক্সেস এবং রিফ্রেশ উভয়ই আছে?


654

খসড়া OAuth 2.0 প্রোটোকলের বিভাগ 4.2 ইঙ্গিত দেয় যে কোনও অনুমোদন সার্ভার উভয়কে access_token(যা একটি উত্স দ্বারা নিজেকে প্রমাণ করার জন্য ব্যবহৃত হয়) পাশাপাশি একটি refresh_tokenতৈরি করতে পারে যা খাঁটিভাবে নতুন তৈরিতে ব্যবহৃত হয় access_token:

https://tools.ietf.org/html/rfc6749#section-4.2

দুটো কেন? কেন কেবল access_tokenদীর্ঘ হিসাবে দীর্ঘ refresh_tokenনা করা এবং একটি নেই refresh_token?

উত্তর:


463

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

রিফ্রেশ টোকেনগুলি যদি আপস করা হয় তবে তা অকেজো কারণ আক্রমণকারীটির অ্যাক্সেস টোকেন পাওয়ার জন্য রিফ্রেশ টোকন ছাড়াও ক্লায়েন্ট আইডি এবং গোপনীয় প্রয়োজন requires

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

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

রিফ্রেশ টোকেনের ব্যবহার সম্পর্কে এখানে একটি ভাল থ্রেড রয়েছে: OAuth সংরক্ষণাগার

উপরের একটি উদ্ধৃতি, রিফ্রেশ টোকেনের সুরক্ষা উদ্দেশ্যে:

টোকেনগুলি রিফ্রেশ করুন ... দীর্ঘমেয়াদী অ্যাক্সেস_ টোকেন ফাঁস হওয়ার ঝুঁকি হ্রাস করে (কোনও অনিরাপদ রিসোর্স সার্ভার, বিটা বা খারাপভাবে কোডেড রিসোর্স সার্ভার অ্যাপ্লিকেশনটিতে লগ ফাইলে ক্যোয়ারী প্যারাম, অ-https সাইটে জেএস এসডিকে ক্লায়েন্ট যা অ্যাক্সেস_ টোকেনটিকে একটিতে রাখে কুকি ইত্যাদি)


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

54
"রিফ্রেশ টোকেনগুলি যদি আপস করা হয় তবে তা অকেজো কারণ আক্রমণকারীর অ্যাক্সেস টোকেন পাওয়ার জন্য রিফ্রেশ টোকনের পাশাপাশি ক্লায়েন্টের আইডি এবং গোপনীয়তাও প্রয়োজন" " কিন্তু ক্লায়েন্টের আইডি এবং গোপনীয়তাও ডিভাইসে সঞ্চিত আছে, তাই না? সুতরাং ডিভাইসে অ্যাক্সেস সহ একটি আক্রমণকারী সেগুলি পেতে পারে। তবে কেন? এখানে, github.com/auth0/lock/wiki/Using-a-Refresh- টোকেন , এটা লেখা আছে যে রিফ্রেশ টোকেনটি হারিয়ে যাওয়া, তিনি যতটা অ্যাথ টোকেন চাইবেন অনুরোধ করতে পারেন , গুগলসের দৃশ্যে নাও থাকতে পারেন, যদি আমি আমার নিজের oauth2 সার্ভারটি প্রয়োগ করি?
জামশেদ কামারুদিন

42
"আক্রমণকারীটির অ্যাক্সেস টোকেন পাওয়ার জন্য রিফ্রেশ টোকন ছাড়াও ক্লায়েন্টের আইডি এবং গোপনীয়তা প্রয়োজন" : তারপরে রিফ্রেশ টোকেন ব্যবহার এবং কেবল পদত্যাগ করার মধ্যে পার্থক্য কী?
sp00m

34
রিফ্রেশ টোকেন কোনও তৃতীয় পক্ষ ব্যবহার করতে পারে যা ব্যবহারকারীর শংসাপত্রগুলির কোনও জ্ঞান ছাড়াই অ্যাক্সেস টোকেনটিকে পুনর্নবীকরণ করতে পারে।
মেরেক ডিসেম্বর

27
@ কেভিনহিলার না, ক্লায়েন্ট আইডি এবং গোপনীয়তা OAuth ক্লায়েন্টের শংসাপত্র, ব্যবহারকারীর নয়। OAuth সম্পর্কে কথা বলার সময় "ক্লায়েন্ট" সাধারণত একটি সার্ভার হয় (উদাহরণস্বরূপ স্ট্যাকওভারফ্লো ওয়েব সার্ভার) যা কোনও অনুমোদন বা সংস্থান API সার্ভারের সাথে ইন্টারফেস করে (উদাহরণস্বরূপ ফেসবুক লেখক সরবরাহকারী)। ব্যবহারকারীর শংসাপত্রগুলি কেবলমাত্র ব্যবহারকারী এবং OAuth API সার্ভারের মধ্যে পাস করা হয় এবং ক্লায়েন্টের কাছে কখনও পরিচিত হয় না। ক্লায়েন্টের গোপনীয়তা কেবলমাত্র ক্লায়েন্ট থেকে OAuth API সার্ভারে দেওয়া হয় এবং এটি কখনও ব্যবহারকারীর কাছে পরিচিত হয় না।
মেশিনটি

551

কচডাভ দ্বারা সরবরাহিত আলোচনার লিঙ্কটিতে ডিক হার্ড্টের তৈরি আরও একটি বৈধ পয়েন্ট (মূল, মৃত লিঙ্ক) রয়েছে , যা আমি বিশ্বাস করি যে উপরে লেখা হয়েছে তা ছাড়াও এখানে উল্লেখ করা ভাল:

আমার রিফ্রেশ টোকেনগুলির প্রত্যাহারটি ছিল সুরক্ষা এবং প্রত্যাবর্তনের জন্য। <...>

প্রত্যাহার: অ্যাক্সেস টোকেনটি যদি স্বয়ংসম্পূর্ণ থাকে তবে নতুন অ্যাক্সেস টোকেন জারি না করে অনুমোদন প্রত্যাহার করা যেতে পারে। অ্যাক্সেস টোকেনটি বৈধ কিনা তা দেখার জন্য কোনও সংস্থার অনুমোদনের সার্ভারটি জিজ্ঞাসা করার দরকার নেই his এমন একটি উইন্ডো রয়েছে যখন অ্যাক্সেস টোকেনটি বৈধ হয় তবে অনুমোদন বাতিল হয়।

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

যদিও, উদ্ধৃতিতে উল্লিখিত হিসাবে, রিফ্রেশ টোকেনগুলির আরেকটি ভূমিকা হ'ল অ্যাক্সেস টোকেনটি যে কোনও সময় ব্যবহারকারী দ্বারা (যেমন তাদের প্রোফাইলে ওয়েব-ইন্টারফেসের মাধ্যমে) প্রত্যাহারযোগ্য হতে পারে তা নিশ্চিত করে সিস্টেমকে একই সময়ে স্কেলেবল রাখতে পারবেন ।

সাধারণত, টোকেনগুলি হ'ল সার্ভারের ডাটাবেসে নির্দিষ্ট রেকর্ডের দিকে ইঙ্গিত করে এলোমেলো শনাক্তকারী হতে পারে বা তারা নিজের মধ্যে সমস্ত তথ্য ধারণ করতে পারে ( উদাহরণস্বরূপ , এই তথ্যটি ম্যাকের সাথে স্বাক্ষর করতে হবে , উদাহরণস্বরূপ)।

দীর্ঘকালীন অ্যাক্সেস টোকেন সহ সিস্টেম কীভাবে কাজ করবে

সার্ভার ক্লায়েন্টকে টোকেন জারি করে স্কোপের একটি পূর্বনির্ধারিত সেট এর মধ্যে ব্যবহারকারীর ডেটা অ্যাক্সেস করতে দেয়। আমরা যেমন টোকেনকে প্রত্যাহারযোগ্য রাখতে চাই, আমাদের অবশ্যই ডাটাবেসটিতে টোকেনটি পতাকাটি "প্রত্যাহারকৃত" সেট করা বা আনসেট না করে সংরক্ষণ করতে হবে (অন্যথায় স্বতঃস্ফূর্ত টোকেন দিয়ে কীভাবে আপনি এটি করবেন?) ডাটাবেসটিতে len(users) x len(registered clients) x len(scopes combination)রেকর্ডের পরিমাণ থাকতে পারে । প্রতিটি এপিআই অনুরোধ অবশ্যই ডাটাবেস হিট করতে হবে। যদিও এই জাতীয় ডেটাবেস ও (1) সম্পাদন করার জন্য প্রশ্ন করা যথেষ্ট তুচ্ছ, তবুও ব্যর্থতার একক পয়েন্টটি সিস্টেমের স্কেলাবিলিটি এবং কর্মক্ষমতাতে নেতিবাচক প্রভাব ফেলতে পারে।

দীর্ঘকালীন রিফ্রেশ টোকেন এবং স্বল্প-জীবন অ্যাক্সেস টোকেন সহ সিস্টেম কীভাবে কাজ করবে

এখানে আমরা দুটি কী ইস্যু করি: ডাটাবেজে সম্পর্কিত রেকর্ডের সাথে এলোমেলো রিফ্রেশ টোকেন এবং স্বাক্ষরিত অ্যাক্সেস টোকেন স্বাক্ষর করে, অন্যদের মধ্যে মেয়াদ শেষ হওয়ার টাইমস্ট্যাম্প ক্ষেত্র থাকে containing

অ্যাক্সেস টোকেনটি স্বয়ংসম্পূর্ণ তাই এর বৈধতা যাচাই করতে আমাদের ডাটাবেসটিকে মোটেও আঘাত করতে হবে না। আমাদের যা করতে হবে তা হ'ল টোকনটি ডিকোড করা এবং স্বাক্ষর এবং টাইমস্ট্যাম্পকে বৈধতা দেওয়া।

তবুও, আমাদের এখনও রিফ্রেশ টোকেনের ডাটাবেস রাখতে হবে, তবে এই ডাটাবেসে অনুরোধের সংখ্যাটি অ্যাক্সেস টোকেনের আয়ু (সাধারণত দীর্ঘতর জীবন, অ্যাক্সেসের হার কম) দ্বারা সংজ্ঞায়িত হয়।

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

Tradeoffs

রিফ্রেশ টোকেনগুলি অ্যাক্সেস টোকেন ডাটাবেসের এসপিওএফ (সিঙ্গেল পয়েন্ট অফ ব্যর্থতা) আংশিকভাবে বাদ দেয়, তবুও তাদের কিছু স্পষ্ট ত্রুটি রয়েছে।

  1. জানালা". ইভেন্টগুলির মধ্যে "ব্যবহারকারী অ্যাক্সেস প্রত্যাহার করে" এবং "অ্যাক্সেস প্রত্যাহার করার নিশ্চয়তা দেওয়া হয়" এর মধ্যে একটি সময়সীমা।

  2. ক্লায়েন্ট যুক্তি জটিলতা।

    রিফ্রেশ টোকেন ছাড়া

    • অ্যাক্সেস টোকেন সহ এপিআই অনুরোধটি প্রেরণ করুন
    • যদি অ্যাক্সেস টোকেন অবৈধ, ব্যর্থ হয়ে ব্যবহারকারীকে পুনরায় প্রমাণীকরণ করতে বলুন

    সঙ্গে রিফ্রেশ টোকেন

    • অ্যাক্সেস টোকেন সহ এপিআই অনুরোধটি প্রেরণ করুন
    • অ্যাক্সেস টোকেনটি অবৈধ থাকলে রিফ্রেশ টোকেন ব্যবহার করে এটি আপডেট করার চেষ্টা করুন
    • রিফ্রেশ অনুরোধটি পাস হলে অ্যাক্সেস টোকেন আপডেট করুন এবং প্রাথমিক এপিআই অনুরোধটি পুনরায় প্রেরণ করুন
    • যদি রিফ্রেশ অনুরোধ ব্যর্থ হয়, ব্যবহারকারীকে পুনরায় প্রমাণীকরণ করতে বলুন

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


4
@ রোমান ইমানকুলভ যদি আমি এটি সঠিকভাবে রিফ্রেশ টোকেন বুঝতে পারি আমরা অ্যাক্সেসটি প্রত্যাহার করতে চাইলে যে কোনও সময় আমরা ডিবিতে সংরক্ষণ করতে পারি এবং সেগুলি মুছতে পারি, তবে কেন অ্যাক্সেসটিকে টোকেনগুলি সংরক্ষণ করবেন না?
kosnkov

30
@ কোসকনকভ আমার পোস্টটির সংক্ষিপ্ত সংস্করণটি হ'ল, যদি আপনি ডাটাবেসে অ্যাক্সেস টোকেন সংরক্ষণ করেন তবে আপনি আপনার এপিআই-র প্রতি অনুরোধে ডাটাবেসটিকে হিট করেন (যা আপনার নির্দিষ্ট ক্ষেত্রে সমস্যা হতে পারে বা নাও হতে পারে)। আপনি যদি রিফ্রেশ টোকেন সংরক্ষণ করেন এবং অ্যাক্সেস টোকেনগুলিকে "স্ব-অন্তর্ভুক্ত" রাখেন তবে ক্লায়েন্ট অ্যাক্সেস টোকেনটি রিফ্রেশ করার সিদ্ধান্ত নেওয়ার সময় আপনি কেবল ডাটাবেসটিকে হিট করেন।
রোমান ইমানকুলভ

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

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

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

199

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

এরকম একটি দৃশ্যের কথা ভাবুন। আপনি 3600 সেকেন্ডের অ্যাক্সেস টোকেনের ব্যবহারকারীকে ইস্যু করেন এবং একদিনের মতো টোকেনকে আরও দীর্ঘায়িত করুন।

  1. ব্যবহারকারী একটি ভাল ব্যবহারকারী, তিনি বাড়িতে আছেন এবং আপনার ওয়েবসাইট কেনাকাটি / বন্ধ করে তার আইফোনে অনুসন্ধান করেন। তার আইপি ঠিকানা পরিবর্তন হয় না এবং আপনার সার্ভারে খুব কম লোড রয়েছে। প্রতি মিনিটে 3-5 পৃষ্ঠা অনুরোধ লাইক করুন। অ্যাক্সেস টোকেনে তার 3600 সেকেন্ড শেষ হয়ে গেলে, তার রিফ্রেশ টোকেন সহ একটি নতুন দরকার হয়। আমরা সার্ভারে তার ক্রিয়াকলাপের ইতিহাস এবং আইপি ঠিকানা যাচাই করে দেখি যে তিনি একজন মানুষ এবং নিজেকে আচরণ করছেন। আমাদের পরিষেবাটি ব্যবহার চালিয়ে যাওয়ার জন্য আমরা তাকে একটি নতুন অ্যাক্সেস টোকেন মঞ্জুর করি। ব্যবহারকারীর নাম / পাসওয়ার্ড প্রবেশ করা প্রয়োজন হবে না যতক্ষণ না সে নিজেই রিফ্রেশ টোকেনের এক দিনের আয়ুতে পৌঁছে যায়।

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

  3. ব্যবহারকারীটি দূষিত ব্যবহারকারী। রোবট ব্যবহার করে প্রতি মিনিটে 1000 বার আমাদের এপিআই কল করে তিনি আমাদের পরিষেবাটি অপব্যবহার করার উদ্দেশ্যে নিয়েছেন। তিনি 3600 সেকেন্ড পরে ভালভাবে এটি করতে পারেন, যখন সে অ্যাক্সেস টোকেনটি রিফ্রেশ করার চেষ্টা করেছিল, আমরা তার আচরণ লক্ষ্য করেছিলাম এবং মনে করি তিনি সম্ভবত মানুষ নন। আমরা রিফ্রেশ প্রক্রিয়াটিকে প্রত্যাখ্যান করি এবং সমাপ্ত করি এবং তাকে আবার ব্যবহারকারীর নাম / পাসওয়ার্ড লিখতে বলি। এটি সম্ভবত তার রোবটের স্বয়ংক্রিয় প্রবাহকে ভঙ্গ করতে পারে। অন্তত তাকে অস্বস্তি করে তোলে।

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

আরেকটি শব্দ হ'ল আপনি প্রতিটি এপিআই প্রয়োগ করে বেসিক আইপি ঘড়ির কুকুর বা অন্য কোনও পদক্ষেপের মাধ্যমে চুরি হওয়া টোকেন / পরিষেবার অপব্যবহারের ক্ষতি নিয়ন্ত্রণকে সীমাবদ্ধ করার চেষ্টা করতে পারেন। তবে এটি ব্যয়বহুল কারণ আপনাকে ব্যবহারকারীর সম্পর্কে রেকর্ড পড়তে হবে এবং আপনার সার্ভারের প্রতিক্রিয়াটি ধীর করবে।


@ লালাগুয়ারের কি আপনার আরও কিছু সূক্ষ্ম দানযুক্ত নীতি রয়েছে যেমন উদাহরণস্বরূপ: যখন ব্যবহারকারী আইপি ঠিকানা পরিবর্তন হয় (যখন মোবাইল ফোন ওয়াইফাই থেকে সংযোগ বিচ্ছিন্ন হয় এবং 3 জি / 4 জি নেটওয়ার্কে সংযোগ থাকে)?
সোভালদা

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

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

7
@ আভি চেরি - হ্যাঁ একটি অ্যাক্সেস টোকেন স্বল্পস্থায়ী হতে পারে, এবং যদি ব্যবহারকারীকে এখনও বৈধ বলে মনে করা হয় তবে তা রিফ্রেশও করা যেতে পারে। এটি করার জন্য একটি রিফ্রেশ টোকেনের প্রয়োজন নেই।
রিক জলি

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

72

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

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


16
গুগলের ক্ষেত্রে এটি আকর্ষণীয় যেমন আপনি যখন রিফ্রেশ টোকেনের জন্য বলেন, আপনি ক্লায়েন্টের আইডি এবং ক্লায়েন্টের গোপনীয়তাও প্রেরণ করেন। সুতরাং আপনি যাইহোক প্রতি ঘন্টা আপস করছেন।
Rots

1
আলেকজান্ডার, আসলে টিটিএল কম, ক্লায়েন্টকে প্রায়শই একটি নতুন অ্যাক্সেস-টোকেন পেতে হবে (যার জন্য ক্লায়েন্টের শংসাপত্রগুলি ব্যবহার করা দরকার) requires সুতরাং আমি আসলে সেখানে 'সংক্ষিপ্ত' মানে। আমি পরিষ্কার করতে একটি নোট যুক্ত করব
বিটি

2
"একমাত্র উদ্দেশ্য" - ধোয়া না। কল্পনা করা রিফ্রেশ-টোকেন যতক্ষণ না অ্যাক্সেস-টোকেনের টিটিএল তৈরি করবে ঠিক তেমনই অর্জন করবে।
রাইবার্ব

8
যেহেতু স্ট্যান্ডার্ডটির জন্য ক্লায়েন্টের শংসাপত্রগুলি রিফ্রেশ টোকেন সহ প্রেরণ করা দরকার , তাই এই উত্তরের ভিত্তিটি কেবল মিথ্যা। "রিফ্রেশ টোকেনগুলি সাধারণত অ্যাক্সেস টোকেনগুলির জন্য অনুরোধ করতে ব্যবহৃত দীর্ঘস্থায়ী শংসাপত্রসমূহ ... ক্লায়েন্টকে অনুমোদন সার্ভারের সাথে প্রমাণীকরণ করা আবশ্যক।" @ রটসের মন্তব্যও দেখুন।
কেভিন ক্রিস্টোফার হেনরি

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

55

কিছু বিভ্রান্তি দূর করতে আপনাকে ক্লায়েন্টের গোপনীয়তার ভূমিকা এবং ব্যবহারকারীর পাসওয়ার্ড বুঝতে হবে যা খুব আলাদা।

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

প্রাথমিক অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেন পেতে, যা প্রয়োজন তা হল:

  • ব্যবহারকারীর আইডি
  • ব্যবহারকারীর পাসওয়ার্ড
  • ক্লায়েন্ট আইডি
  • ক্লায়েন্ট গোপন

রিফ্রেশ অ্যাক্সেস টোকেন পেতে ক্লায়েন্ট নিম্নলিখিত তথ্য ব্যবহার করে:

  • ক্লায়েন্ট আইডি
  • ক্লায়েন্ট গোপন
  • রিফ্রেশ টোকেন

এটি স্পষ্টতই পার্থক্যটি দেখায়: রিফ্রেশ করার সময় ক্লায়েন্ট তার ক্লায়েন্টের গোপনীয়তা ব্যবহার করে অ্যাক্সেস টোকেনগুলি রিফ্রেশ করার অনুমোদন পায় এবং এভাবে ব্যবহারকারী আইডি + পাসওয়ার্ডের পরিবর্তে রিফ্রেশ টোকেন ব্যবহার করে ব্যবহারকারীকে পুনরায় প্রমাণীকরণ করতে পারে। এটি কার্যকরভাবে তার পাসওয়ার্ডটি পুনরায় প্রবেশ করতে বাধা দেয়।

এটি আরও দেখায় যে একটি রিফ্রেশ টোকেন হারাতে কোনও সমস্যা নেই কারণ ক্লায়েন্টের আইডি এবং গোপনীয়তা জানা নেই। এটি আরও দেখায় যে ক্লায়েন্টের আইডি এবং ক্লায়েন্টের গোপনীয় গোপনীয়তা রাখা জরুরী


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

7
অ্যাপ্লিকেশন সার্ভার নিজেকে রিফ্রেশ টোকেন সরবরাহ করার কোনও উপায় সরবরাহ করে না, আপনি এটিকে রিফ্রেশ টোকন দিয়ে একটি নতুন প্রমাণীকরণ টোকেন তৈরি করতে বলতে পারবেন না। এটি "দৃশ্যের পিছনে" যখন প্রয়োজন হয় তখন এথ টোকেনকে নতুন করে তোলে।
অ্যাডভারসাস

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

@ কেভিনক্রিস্টোফার হেনরি এই জাতীয় পরামর্শ দেয় যে কোনও শেষ ব্যবহারকারী ব্যবহারকারীর জন্য কেবল এক্সওয়াইজেড.কম ওয়েবসাইটে লগইন করবেন এক্সওয়াইজেড.কমের জন্য নতুন এক্সেস টোকন পাওয়ার জন্য একটি রিফ্রেশ টোকেন অর্থহীন? তবে একটি রিফ্রেশ টোকন কোনও অনির্দেশ্য স্ট্রিং হতে পারে - কোনও গাইডের মতো - কোনও টেবিলের মধ্যে খুব তাড়াতাড়ি দেখা যায়। যেখানে অ্যাক্সেস টোকেনটি ডাটাবেসে সূচকের চেয়ে অনেক বেশি দীর্ঘ এবং শক্ত হতে পারে। সুতরাং রিফ্রেশ টোকেন CAN সংরক্ষণ করা যেতে পারে এবং শেষ ব্যবহারকারী পক্ষ থেকে সুবিধা আছে। [যদিও এই প্রশ্নটি ওউথ 2 সম্পর্কে আলোচনা করেছে কারণ কোনও তৃতীয় পক্ষের পরিষেবা ব্যতীত কোনও উত্তর যা কোনও ব্যক্তির পক্ষে কাজ করে তা কোনওভাবেই প্রাসঙ্গিক নয়]
সাইমন_উইভার

নতুন অ্যাক্সেস টোকেন পেতে আপনি কেন 'ক্লায়েন্ট আইডি' + 'ক্লায়েন্ট সিক্রেট' + 'মেয়াদ উত্তীর্ণ অ্যাক্সেস টোকেন' পাস করতে পারবেন না?
মধু

37

এই উত্তরটি জাস্টিন রিচারের OAuth 2 স্ট্যান্ডার্ড বডি ইমেল তালিকার মাধ্যমে। এটি তাঁর অনুমতি নিয়ে পোস্ট করা হয়েছে।


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

এছাড়াও, কেবল অ্যাক্সেস টোকেন পাওয়ার অর্থ এটি ব্যবহারকারীর লগইন হওয়া নয় fact বাস্তবে, ব্যবহারকারীটি আর উপস্থিত থাকতে পারে না, এটি আসলে রিফ্রেশ টোকেনের উদ্দেশ্যে ব্যবহারের ক্ষেত্রে। অ্যাক্সেস টোকেনকে রিফ্রেশ করা আপনাকে ব্যবহারকারীর পক্ষে একটি এপিআইতে অ্যাক্সেস দেবে, এটি আপনাকে ব্যবহারকারীর আছে কিনা তা বলবে না।

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

আরও তথ্যের জন্য দয়া করে পড়ুন http://oauth.net/articles/authentication/ পড়ুন


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

18

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

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

রিফ্রেশ টোকেনগুলি একই স্থানে ফিট হয় যেখানে সাধারণ ওয়েবসাইটগুলি ব্যবহারকারীরা প্রায় এক ঘন্টা বা তার পরে (যেমন ব্যাংকিং সাইট) পরে পর্যায়ক্রমে পুনরায় প্রমাণীকরণ করতে পছন্দ করতে পারে। বর্তমানে এটি বেশিরভাগ ব্যবহার করা হয় না কারণ বেশিরভাগ সামাজিক ওয়েবসাইটগুলি ওয়েব ব্যবহারকারীদের পুনরায় প্রমাণীকরণ করে না, তবে তারা কেন ক্লায়েন্টকে পুনরায় প্রমাণীকরণ করবে?


2
"রিফ্রেশ টোকেনগুলি কোনও ক্লায়েন্টকে কেবল পুনরায় প্রমাণীকরণের জন্য অনুমতি দেয় ..." এখানে একটি গুরুত্বপূর্ণ বিষয়।
জেমস

13

রিফ্রেশ_ টোকেন এবং রিফ্রেশ_ টোকেন না রেখে কেবল অ্যাক্সেস টোকনকে কেন স্থায়ী করবেন না?

দারুণ জবাব ছাড়াও অন্যান্য ব্যক্তিরা যে রিফ্রেশ টোকেন ব্যবহার করার এবং দাবীগুলি করার জন্য এটি করতে হবে তার অন্য কারণ রয়েছে provided

প্রতিটি টোকনে এমন দাবি রয়েছে যা ব্যবহারকারীর নাম, তাদের ভূমিকা বা দাবি তৈরিকারী সরবরাহকারী থেকে যে কোনও কিছু অন্তর্ভুক্ত করতে পারে। টোকেনটি সতেজ হওয়ার সাথে সাথে এই দাবিগুলি আপডেট করা হয়।

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


4
অ্যাক্সেস টোকেনে এই ধরনের "দাবি" রাখা কোনও অস্বাভাবিক খারাপ অভ্যাস হবে। স্পেসিফিকেশনে বর্ণিত হিসাবে , অ্যাক্সেস টোকেন "ক্লায়েন্টের কাছে সাধারণত অস্বচ্ছ"। আপনার কাছে OAuth সরবরাহকারীদের উদাহরণ রয়েছে যা এটি করে?
কেভিন ক্রিস্টোফার হেনরি

3
@heymega যখন ব্যবহারকারীর ভূমিকা অ্যাডমিন থেকে REGULAR_USER এ ডাউনগ্রেড করা হয় তখন প্রত্যাশাটি যে ব্যবহারকারীর ভূমিকা অবিলম্বে বাতিল করা দরকার এবং অ্যাক্সেস_ টোকেনের মেয়াদ শেষ হওয়ার পরে নয়। সুতরাং, দেখে মনে হচ্ছে প্রতিটি অনুরোধে ডাটাবেস হিট করা অনিবার্য।
সোভালদা 16:58

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

13

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

আপনি অ্যাক্সেস টোকেনটি বাতিল করতে পারবেন না, কেবল একটি রিফ্রেশ টোকেন।


1
আপনি একটি অ্যাক্সেস টোকেন প্রত্যাহার করতে পারেন, যার জন্য অন্য অ্যাক্সেস টোকেনের জন্য আবার লগ ইন করতে হবে বা অন্য অ্যাক্সেস টোকেনটি রিফ্রেশ টোকেন ব্যবহার করতে হবে। যদি রিফ্রেশ টোকেনটি অবৈধ ছিল, ব্যবহারকারীকে নতুন রিফ্রেশ টোকেনের সাথে একটি নতুন অ্যাক্সেস টোকেন পেতে পুনরায় প্রমাণীকরণ করতে হবে।
আতিহ

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

1
বলার অপেক্ষা রাখে না যে আপনি লিখতে কাস্টম কোড (এখানে মত নির্দিষ্ট টোকেন উপেক্ষা করার পারে stackoverflow.com/questions/22708046/... ) কিন্তু এমনটি যে সম্ভবত OAuth সার্ভারে রিসোর্স সার্ভার থেকে কিছু নেটওয়ার্ক ভ্রমণের জড়িত / প্রতিটি সময় ডিবি ক্লায়েন্ট তোলে ডাক. পরিবর্তে রিফ্রেশ টোকেন ব্যবহার করে আপনি এই কলগুলি এড়াতে পারবেন এবং আমার ধারণা ওওথ লেখকরা যা চেয়েছিলেন তার সাথে সামঞ্জস্যপূর্ণ।
বিটকোডার

13

এই উত্তর দুটি সিনিয়র দেবের (জন ব্রায়টন এবং ডেভিড জেনেস) সাহায্যে একত্রিত করা হয়েছে।

রিফ্রেশ টোকেন ব্যবহারের প্রধান কারণ হ'ল আক্রমণ পৃষ্ঠটি হ্রাস করা।

ধরা যাক কোনও রিফ্রেশ কী নেই এবং আসুন এই উদাহরণটি দেখি:

একটি বিল্ডিংয়ের 80 টি দরজা রয়েছে। সমস্ত দরজা একই কী দিয়ে খোলা হয়। প্রতি 30 মিনিটে কী পরিবর্তন হয়। 30 মিনিটের শেষে আমাকে কী প্রস্তুতকারকের কাছে পুরানো কীটি দিতে হবে এবং একটি নতুন কী পেতে হবে।

যদি আমি হ্যাকার হয়ে থাকি এবং আপনার কীটি পেয়েছি, তবে 30 মিনিটের শেষে আমি কী-মেকারের সাথে কুরিয়ার করব এবং একটি নতুন কী পেয়ে যাব। আমি একটানা করতে সক্ষম হবোকী পরিবর্তন না করেই সমস্ত দরজা খুলতে ।

প্রশ্ন: 30 মিনিটের সময়, কীটির বিপক্ষে আমার কত হ্যাকিংয়ের সুযোগ ছিল? আমার কাছে হ্যাকিংয়ের 80 টি সুযোগ ছিল, প্রতিবার আপনি কীটি ব্যবহার করেছেন (এটি নিজেকে নেটওয়ার্ক সনাক্ত করার জন্য অ্যাক্সেস টোকনটি পাস করার জন্য ভাবেন)। সুতরাং যে 80X আক্রমণ পৃষ্ঠ।

এখন একই উদাহরণটি দিয়ে যাই তবে এবার ধরে নেওয়া যাক একটি রিফ্রেশ কী আছে।

একটি বিল্ডিংয়ের 80 টি দরজা রয়েছে। সমস্ত দরজা একই কী দিয়ে খোলা হয়। প্রতি 30 মিনিটে কী পরিবর্তন হয়। একটি নতুন কী পেতে, আমি পুরানো অ্যাক্সেস টোকেনটি পাস করতে পারি না। আমাকে অবশ্যই রিফ্রেশ কীটি পাস করতে হবে।

যদি আমি হ্যাকার হয়ে থাকি এবং আপনার কীটি পেয়েছি তবে আমি এটি 30 মিনিটের জন্য ব্যবহার করতে পারি, তবে 30 মিনিটের শেষে কী মেকারের কাছে পাঠানোর কোনও মূল্য নেই। যদি আমি এটি করি, তবে কী মেকার কেবল এই খারাপ রিফ্রেশ টোকনটি বলবেন। আমার হ্যাকটি প্রসারিত করতে সক্ষম হতে আমাকে কী মেকারের কাছে কুরিয়ার হ্যাক করতে হবে। কুরিয়ারের একটি আলাদা কী রয়েছে (এটিকে রিফ্রেশ টোকেন হিসাবে মনে করুন)।

প্রশ্ন: 30 মিনিটের সময়, রিফ্রেশ কীটির বিপক্ষে আমার কত হ্যাকিংয়ের সুযোগ ছিল? 80? না। আমার কাছে কেবল 1 টি হ্যাকিংয়ের সুযোগ ছিল। কুরিয়ারটি মূল নির্মাতার সাথে যোগাযোগের সময়। সুতরাং যে 1 এক্স আক্রমণ পৃষ্ঠ। চাবিটির বিপরীতে আমার কাছে হ্যাকিংয়ের 80 টি সুযোগ রয়েছে তবে 30 মিনিটের পরে সেগুলি ভাল নয়।


একটি সার্ভার শংসাপত্রগুলির উপর ভিত্তি করে একটি অ্যাক্সেস টোকেন যাচাই করবে এবং (সাধারণত) একটি জেডাব্লুটি তে স্বাক্ষর করবে।

অ্যাক্সেস টোকেন ফাঁস খারাপ, তবে এটির মেয়াদ শেষ হয়ে গেলে এটি আর আক্রমণকারীর পক্ষে আর কার্যকর হয় না। একটি রিফ্রেশ টোকেন ফাঁস আরও খারাপ, তবে সম্ভবত এটি কম সম্ভাব্য। (আমি মনে করি যে রিফ্রেশ টোকেন ফাঁস হওয়ার সম্ভাবনা অ্যাক্সেস টোকেন ফাঁসের চেয়ে অনেক কম কিনা, তবে এটিই ধারণা।

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

ফ্রিকোয়েন্সি আক্রমণকারীকে সহায়তা করে। হার্টব্লিড মতো সম্ভাব্য সুরক্ষা ত্রুটি, ক্লায়েন্টের সম্ভাব্য সুরক্ষা ত্রুটি এবং সার্ভারে সম্ভাব্য সুরক্ষা ত্রুটিগুলি সমস্ত ফাঁসকে সম্ভব করে তোলে।

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

সুরক্ষার জন্য বিভাগীয়করণ ভাল।

সর্বশেষে তবে অন্তত এই দুর্দান্ত উত্তরটি দেখুন না


কোন রিফ্রেশ টোকেন সম্পর্কে নয়?

রিফ্রেশ টোকেনের মাধ্যমে অ্যাক্সেসের স্তর আপডেট / বাতিল করার ক্ষমতাটি রিফ্রেশ টোকেনগুলি ব্যবহার করার চয়ন করার একটি উপজাত, অন্যথায় স্ট্যান্ডেলোন অ্যাক্সেস টোকেনটি বাতিল করা যেতে পারে বা এটির মেয়াদ শেষ হওয়ার সাথে সাথে তার অ্যাক্সেস স্তরটি পরিবর্তন করা যেতে পারে এবং ব্যবহারকারীরা একটি নতুন টোকেন পায়


2
প্রশ্নগুলি পৃথক হওয়ার কারণে এই তুলনাটি অনুসরণ করা শক্ত 1. "৩০ মিনিটের সময়, কীটির বিপক্ষে আমার কত হ্যাকিংয়ের সুযোগ ছিল?" (প্রথম হ্যাকার হিসাবে কীটি আমার কাছে ছিল না?) ২. "৩০ মিনিটের সময় কুরিয়ারের বিপরীতে আমার কত হ্যাকিংয়ের সুযোগ ছিল?" "হ্যাকিংয়ের সুযোগ" কী হবে? হ্যাকার হিসাবে আমার কাছে কীটি প্রথম স্থানে ছিল না?
Cesc

1
তুমি ঠিক বলছো. আমি পরিবর্তন করেছি
মধু

4

ধরুন আপনি access_tokenশেষটি খুব দীর্ঘ করেছেন, এবং নেই refresh_token, তাই একদিনে, হ্যাকার এটি পানaccess_token এবং তিনি সমস্ত সুরক্ষিত সংস্থান অ্যাক্সেস করতে পারেন!

কিন্তু আপনি আছে যদি refresh_token, access_tokenএর লাইভ সময় সংক্ষিপ্ত, তাই হ্যাকারের কাছে আপনার হ্যাক কঠিন হয় access_token, কারণ এটি সময় অল্প সময়ের পর অবৈধ হবে। Access_tokenশুধুমাত্র না শুধুমাত্র ব্যবহার করে ফিরে পুনরায় উদ্ধার করা যাবে refresh_tokenকিন্তু দ্বারা client_idএবং client_secret, যা হ্যাকার নেই।


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

2

রিফ্রেশ টোকেন অনুমোদনের সার্ভার দ্বারা ধরে রাখা হয়। অ্যাক্সেস টোকেন স্ব-অন্তর্ভুক্ত তাই রিসোর্স সার্ভার এটি সংরক্ষণ না করে এটি যাচাই করতে পারে যা বৈধতার ক্ষেত্রে পুনরুদ্ধারের প্রচেষ্টা সাশ্রয় করে। আলোচনায় অনুপস্থিত অন্য একটি বিষয় rfc6749 # পৃষ্ঠা-55 থেকে

"উদাহরণস্বরূপ, অনুমোদন সার্ভারটি রিফ্রেশ টোকেন রোটেশনটি নিয়োগ করতে পারে যেখানে প্রতিটি অ্যাক্সেস টোকেন রিফ্রেশ প্রতিক্রিয়া সহ একটি নতুন রিফ্রেশ টোকেন জারি করা হয় previous আক্রমণকারী এবং বৈধ ক্লায়েন্ট উভয়ই, তাদের মধ্যে একটি অবৈধ রিফ্রেশ টোকেন উপস্থাপন করবে, যা এই লঙ্ঘনের অনুমোদন সার্ভারকে অবহিত করবে।

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


আমি মনে করি এটি একটি খুব গুরুত্বপূর্ণ বিষয় :-) এটি - কিছুটা ডিগ্রি পর্যন্তওA Single-Page Application (normally implementing Single-Page Login Flow) should not under any circumstances get a Refresh Token. The reason for that is the sensitivity of this piece of information. You can think of it as user credentials, since a Refresh Token allows a user to remain authenticated essentially forever. Therefore you cannot have this information in a browser, it must be stored securely.
সাইমন_উইভার

1

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

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

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


0

প্রথমত, ক্লায়েন্ট অনুমোদন অনুদান দিয়ে অনুমোদনের সার্ভারের সাথে অনুমোদন করে।

তারপরে, ক্লায়েন্ট অ্যাক্সেস টোকেন দিয়ে সুরক্ষিত সংস্থানটির জন্য রিসোর্স সার্ভারটির জন্য অনুরোধ করে।

রিসোর্স সার্ভার অ্যাক্সেস টোকেনকে বৈধতা দেয় এবং সুরক্ষিত সংস্থান সরবরাহ করে।

ক্লায়েন্ট অ্যাক্সেস টোকেন মঞ্জুর করে রিসোর্স সার্ভারে সুরক্ষিত রিসোর্স অনুরোধ করে, যেখানে রিসোর্স সার্ভার এটিকে বৈধতা দেয় এবং বৈধ হলে অনুরোধটি সরবরাহ করে। অ্যাক্সেস টোকেনের মেয়াদ শেষ না হওয়া পর্যন্ত এই পদক্ষেপটি পুনরাবৃত্তি করতে থাকে।

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

ক্লায়েন্ট রিফ্রেশ টোকেন প্রদান করে অনুমোদনের সার্ভারের সাথে প্রমাণীকরণ করে।

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


এটি রিফ্রেশ টোকেন কোথা থেকে উত্পন্ন তা উল্লেখ করে না। আমি ধরে নিচ্ছি দ্বিতীয় অনুচ্ছেদে কি বলা উচিত access token + refresh token?
সাইমন_উইভার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.