REST- ভিত্তিক অ্যাপ্লিকেশনটির জন্য JWT অনুমোদনের জন্য এন্টারপ্রাইজ নিদর্শন?


9

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

আমি জেডাব্লুটি প্রমাণীকরণের জন্য কিছু ভাল চিন্তাশীল এবং পরীক্ষিত এন্টারপ্রাইজ প্যাটারের সন্ধান করছি, যা আমি ব্যবহার করতে বা মানিয়ে নিতে পারি, তবে আমি সম্পূর্ণ কিছু খুঁজে পেতে ব্যর্থ হয়েছি।

আমি যা ভাবছিলাম তা হ'ল:

  • যখন কোনও অনুমোদনের শিরোনাম পূরণ হয় না, বা জেডাব্লুটি টোকেনটি অবৈধ, বা মেয়াদ উত্তীর্ণ হয়, HTTP 401 প্রেরণ করুন
  • প্রমাণীকরণের জন্য, REST চ্যানেলটি ব্যবহার / লগইন করতে, JSON অবজেক্ট হিসাবে ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রেরণ করুন
  • টোকেনটি বাঁচিয়ে রাখতে, চালিয়ে যাওয়া / আরআরএসটি চ্যানেলটি ব্যবহার করুন, প্রতি এন (5) মিনিটে এটিকে কল করুন, নতুন জেডাব্লুটি টোকন পাবেন এবং প্রতিটি কলের পরে বিদ্যমান একটিকে প্রতিস্থাপন করুন (টোকেন এম (15) মিনিটের পরে শেষ হবে)

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

এমন কোনও প্রস্তুত উদ্যোগ রয়েছে যা আমার উন্মুক্ত পয়েন্টগুলির উত্তর দেয়? আমার প্রোটোকল খসড়া কি নির্ভরযোগ্য ধারণা? আমি স্ক্র্যাচ থেকে ডিজাইনের চেয়ে প্রস্তুত কিছু ব্যবহার করতে পছন্দ করব।


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

উত্তর:


4

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

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

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

আপনার নির্দিষ্ট খোলা পয়েন্ট সম্পর্কে:

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

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

অবশেষে, এই প্রোটোকলগুলি প্রচুর পরিমাণে প্রচ্ছদ .েকে রাখে যাতে তারা কিছু পরিস্থিতিতে ওভারকিল করে।


2
সতর্কতার সতর্কতার জন্য +1 এবং লিখিত প্রশ্নের চেয়ে ইমপ্লাইয়েড প্রশ্নের সম্পূর্ণ উত্তর answer
পল

3

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

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

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

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