রেস্টস্টুল ওয়েব সার্ভিস - অন্যান্য পরিষেবাগুলির অনুরোধগুলি কীভাবে প্রমাণীকরণ করবেন?


117

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

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

যে বিকল্পগুলি আমি ভাবতে পারি (বা আমাকে পরামর্শ দেওয়া হয়েছে):

  1. ক্লায়েন্ট পরিষেবাদিগুলিতে একটি "জাল" ব্যবহারকারীর নাম এবং পাসওয়ার্ড থাকার অবলম্বন করুন এবং সেগুলি ব্যবহারকারীদের মতোই প্রমাণীকরণ করুন। আমি এই বিকল্পটি পছন্দ করি না - এটি ঠিক ঠিক মনে হয় না।

  2. ক্লায়েন্ট পরিষেবার জন্য একটি স্থায়ী অ্যাপ্লিকেশন আইডি, সম্ভবত একটি অ্যাপ্লিকেশন কী বরাদ্দ করুন। আমি যতদূর বুঝতে পেরেছি এটি ইউজারনেম + পাসওয়ার্ড থাকার মতোই। এই আইডি এবং কী দিয়ে আমি প্রতিটি অনুরোধকে প্রমাণীকরণ করতে পারি, বা আরও অনুরোধগুলি প্রমাণ করার জন্য একটি প্রমাণীকরণ টোকেন তৈরি করতে পারি। যে কোনও উপায়েই, আমি এই বিকল্পটি পছন্দ করি না, কারণ যে কেউ অ্যাপ্লিকেশন আইডি এবং কী ধরে রাখতে পারে সে ক্লায়েন্টটির ছদ্মবেশ তৈরি করতে পারে।

  3. আমি আগের বিকল্পটিতে একটি আইপি ঠিকানা চেক যোগ করতে পারি। এটি জাল অনুরোধগুলি সম্পাদন করা আরও শক্ত করে তুলবে।

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

  5. অন্য কিছু - সেখানে অবশ্যই অন্যান্য সমাধান থাকতে হবে?

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


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

অন্য একটি প্রশ্ন (প্রায় দুই বছর বয়সে) পাওয়া গেল যা একই ধরণের বিষয়টিকে স্পর্শ করে: stackoverflow.com/questions/1138831/…
টমমি

কোন ওএস পরিষেবাগুলি (ওয়েব এবং অন্যান্য উভয়ই) হোস্ট করেছে? তারা কি সার্ভারগুলিতে চলছে যা একই পরিকাঠামোর অংশ?
অ্যান্ডারস আবেল

ওএস বিভিন্ন হতে পারে: উইন, * নিক্স ইত্যাদি এবং ক্লায়েন্ট পরিষেবাদিগুলি আমার পরিষেবা হিসাবে একই অবকাঠামোর মধ্যে থাকতে পারে বা নাও পারে।
টমমি

উত্তর:


34

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

আমি মনে করি না যে ক্লায়েন্ট শংসাপত্রের সমাধানের জন্য আপনার পয়েন্ট এ সমাধান করা কঠিন। আপনি শুধু একটি শাখা ব্যবহার করুন। if (client side certificat) { check it } else { http basic auth }আমি কোনও জাভা বিশেষজ্ঞ নই এবং ক্লায়েন্ট সাইড শংসাপত্রগুলি করার জন্য আমি এর সাথে কখনও কাজ করি না। তবে একটি দ্রুত গুগল আমাদের এই টিউটোরিয়ালের দিকে নিয়ে যায় যা আপনার গলির উপরে উঠে আসে looks

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

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


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

5
টিউটোরিয়াল লিঙ্কটি টিউটোরিয়াল নিবন্ধের দিকে নিয়ে যায় না তবে ওরাকল সাইটের কিছু জাভা সূচক পৃষ্ঠায় ...
মার্জান ভেনেমা

2
@ মারজানভেনেমা ওয়েল, কারণ আপনি newz2000 জবাব দেওয়ার +2 বছর পরে লিংকটি চেষ্টা করছেন, তবে আপনি সর্বদা ওয়েব্যাক মেশিনটি চেষ্টা করতে পারেন: web.archive.org/web/20110826004236/http://java.sun.com/…
ফ্যাবিও ডিউক সিলভা

1
@ মারজানভেনেমা: আমি দুঃখিত, তবে আপনি আশা করছেন যে newz2000 এখানে এসে লিঙ্কটি মারা যাওয়ার পরে আপডেট করবেন? যেমনটি আপনি বলেছেন, এটি লিঙ্ক পচা, তাই তাড়াতাড়ি বা পরে ঘটে। হয় আপনি সেই সময় লেখক কী দেখছিলেন তা দেখার জন্য আপনি সংরক্ষণাগারটি অ্যাক্সেস করার চেষ্টা করুন বা আপনি নতুন লিঙ্কটি খুঁজে পেয়ে একটি ইতিবাচক অবদান রাখেন। আপনার মন্তব্যটি কাউকে কীভাবে সহায়তা করেছে তা আমি দেখতে পাচ্ছি না। তবে এখানে, এই লিঙ্কটি অনুসরণ করুন: oracle.com/technetwork/articles/javase/… (সতর্ক থাকুন যে এটি শেষ পর্যন্ত খুব পচে যাবে)
ফ্যাবিও ডিউক সিলভা

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

36

আপনার প্রশ্নটি পড়ার পরে, আমি বলব, অনুরোধ করার জন্য বিশেষ টোকেন তৈরি করুন। এই টোকেনটি নির্দিষ্ট সময়ে বেঁচে থাকবে (একদিনে বলি)।

প্রমাণীকরণ টোকেন উত্পন্ন থেকে এখানে একটি উদাহরণ:

(day * 10) + (month * 100) + (year (last 2 digits) * 1000)

উদাহরণস্বরূপ: 3 জুন 2011

(3 * 10) + (6 * 100) + (11 * 1000) = 
30 + 600 + 11000 = 11630

তারপরে ব্যবহারকারীর পাসওয়ার্ড সহ একত্রিত করুন, উদাহরণস্বরূপ "my4wesomeP4ssword!"

11630my4wesomeP4ssword!

তারপরে সেই স্ট্রিংয়ের MD5 করুন:

05a9d022d621b64096160683f3afe804

আপনি কখন কোনও অনুরোধ কল করবেন, সর্বদা এই টোকেনটি ব্যবহার করুন,

https://mywebservice.com/?token=05a9d022d621b64096160683f3afe804&op=getdata

এই টোকেনটি সর্বদা প্রতিদিন অনন্য, তাই আমি অনুমান করি যে এই ধরণের সুরক্ষা সর্বদা আপনার পরিষেবা রক্ষা করার জন্য যথেষ্ট পরিমাণের চেয়ে বেশি।

আশা সাহায্য করে

:)


1
আমি প্রতিটি অনুরোধে আপনি যেভাবে সুরক্ষা টোকেন যুক্ত করেছিলেন তা আমি সত্যিই পছন্দ করি তবে প্রোগ্রামার ইতিমধ্যে 100 টি জেএসপি পৃষ্ঠা তৈরি করে এবং এর পরে t0 পূর্বে তৈরি 100 পৃষ্ঠাগুলিতে সেই সাথে যে পৃষ্ঠাগুলি তৈরি হতে চলেছে তা প্রয়োগ করে। সেক্ষেত্রে প্রতিটি অনুরোধে টোকেন যুক্ত করে সঠিক পছন্দ নয়। আপনার কৌশলটির জন্য যাইহোক +1 করুন। :)
অঙ্কুর ভার্মা

4
ঘড়িগুলি সিঙ্ক্রোনাইজ করা না হলে কী হয়? ক্লায়েন্ট কি এই উদাহরণে ভুল টোকেন তৈরি করতে পারে না? এমনকি উভয়ই ইউটিসিতে ডেটটাইম উত্পন্ন করলেও, তাদের ঘড়িগুলি প্রতিদিনের সময়ের একটি উইন্ডোর ফলে আলাদা হতে পারে, যখন টোকেনটি কাজ করবে না?
নিক

@ নিকজি, আমার আগে এই সমস্যা ছিল, সার্ভার সময় অনুরোধ করে এটি সুরক্ষিত করার একমাত্র উপায়। এটি 99% ইউটিসির সমস্যাটিকে মেরে ফেলবে। অবশ্যই ডাউনসাইডটি সার্ভারে অতিরিক্ত একটি কল।
করোরো

তবে আমি এখনও একদিনের জন্য এই টোকেনটি ব্যবহার করে আপনার ওয়েব পরিষেবা গ্রাস করতে পারি? আমি কীভাবে এটি সাহায্য করবে তা দেখছি না
মিনা গ্যাব্রিয়েল

@ মিনাগাব্রিয়েল আপনি টোকেন প্রজন্মের মধ্যে আরও সময়সীমা যুক্ত করতে পারেন। (মিনিট * 10) + (ঘন্টা * 100) + (দিন * 1000) + (মাস * 10000) + (বছর (শেষ 2 সংখ্যা) * 100000)
কোরো

11

আপনি নিতে পারেন বিভিন্ন পদ্ধতি আছে।

  1. RESTful purists আপনাকে বেসিক প্রমাণীকরণ ব্যবহার করতে এবং প্রতিটি অনুরোধে শংসাপত্র প্রেরণ করতে চাইবে। তাদের যুক্তি হ'ল কেউই কোনও রাজ্য সংরক্ষণ করছে না।

  2. ক্লায়েন্ট পরিষেবাটি কোনও কুকি সঞ্চয় করতে পারে যা একটি সেশন আইডি বজায় রাখে। আমি শুনেছি এমন কিছু শুদ্ধবাদী হিসাবে ব্যক্তিগতভাবে আমি আপত্তিজনক মনে করি না - বার বার প্রমাণীকরণ করা ব্যয়বহুল হতে পারে। মনে হচ্ছে আপনি এই ধারণাটি খুব পছন্দ করেন না যদিও।

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


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

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

একইভাবে, ওআউথ দৃশ্যে, শেষ-ব্যবহারকারী আপনার মধ্যস্থতা পরিষেবাতে আপনার ওয়েব পরিষেবায় তাদের অ্যাক্সেস প্রেরণ করে।
jwismar

একটি ভুল বোঝাবুঝি হচ্ছে বলে মনে হচ্ছে - ক্লায়েন্ট পরিষেবার পিছনে কোনও শেষ ব্যবহারকারী নেই । পরিস্থিতি আরও ভাল করে ব্যাখ্যা করতে আমি আমার প্রশ্ন আপডেট করেছি।
টম্মি

1
আমি কেবল যুক্ত করব যে উপরে তালিকাভুক্ত # 1 বিকল্পটি কেবল এইচটিটিপিএসের মাধ্যমে করা উচিত।
মিঃ-স্ক

3

আমি পদ্ধতির বিশ্বাস করি:

  1. প্রথম অনুরোধ, ক্লায়েন্ট আইডি / পাসকোড প্রেরণ করে
  2. অনন্য টোকেনের জন্য এক্সচেঞ্জ আইডি / পাস
  3. প্রতিটি পরবর্তী অনুরোধটির মেয়াদ শেষ না হওয়া অবধি টোকেনকে বৈধ করুন

আপনি কীভাবে প্রয়োগ করেন এবং অন্যান্য নির্দিষ্ট প্রযুক্তিগত বিবরণ নির্বিশেষে বেশ মানক।

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

আশাকরি এটা সাহায্য করবে


3

ক্লায়েন্টের শংসাপত্রের পদ্ধতির যতদূর যায়, এখনও ক্লায়েন্টের শংসাপত্র ছাড়াই ব্যবহারকারীদের মঞ্জুরি দেওয়ার সময় এটি প্রয়োগ করা মারাত্মকভাবে কঠিন হবে না।

যদি আপনি প্রকৃতপক্ষে নিজের স্ব-স্বাক্ষরিত শংসাপত্র কর্তৃপক্ষ তৈরি করেন এবং প্রতিটি ক্লায়েন্ট পরিষেবায় ক্লায়েন্ট শংসাপত্র জারি করেন তবে আপনার সেই পরিষেবাগুলিকে প্রমাণীকরণের সহজ উপায় থাকবে।

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

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

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


3

৫. অন্য কিছু - সেখানে অবশ্যই অন্যান্য সমাধান থাকতে হবে?

তুমি ঠিক আছো, আছে! এবং একে বলা হয় জেডাব্লুটি (জেএসএন ওয়েব টোকেন্স)।

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

আমি জেডাব্লুটিটিগুলিতে সর্বাধিক দেখার পরামর্শ দিচ্ছি। বিকল্প সমাধানগুলির সাথে তুলনা করার সময় তারা সমস্যার অনেক সহজ সমাধান're

https://jwt.io/introduction/


1

আপনি সার্ভারে সেশন তৈরি করতে পারবেন এবং sessionIdপ্রতিটি আরএএসটি কলের সাথে ক্লায়েন্ট এবং সার্ভারের মধ্যে ভাগ করতে পারেন ।

  1. প্রথম অনুমোদন বিশ্রাম অনুরোধ: /authenticate। এর সাথে প্রতিক্রিয়া (আপনার ক্লায়েন্ট ফর্ম্যাট অনুসারে) ফেরত দেয় sessionId: ABCDXXXXXXXXXXXXXX;

  2. এই দোকান sessionIdমধ্যে Mapপ্রকৃত অধিবেশন সঙ্গে। Map.put(sessionid, session)বা SessionListenerআপনার জন্য কী তৈরি এবং ধ্বংস করতে ব্যবহার করুন ;

    public void sessionCreated(HttpSessionEvent arg0) {
      // add session to a static Map 
    }
    
    public void sessionDestroyed(HttpSessionEvent arg0) {
      // Remove session from static map
    }
    
  3. প্রতিটি আরইএসটি কলের সাথে সেশনেশন পান URL?jsessionid=ABCDXXXXXXXXXXXXXX( যেমন বা অন্য কোনও উপায়ে);

  4. HttpSessionব্যবহার করে মানচিত্র থেকে পুনরুদ্ধার করুন sessionId;
  5. সেশনটি সক্রিয় থাকলে সেই অধিবেশনের জন্য অনুরোধ বৈধ করুন;
  6. প্রতিক্রিয়া বা ত্রুটি বার্তা প্রেরণ করুন।

0

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


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

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

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

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

তবে এটি ঠিক তখনকার মতো ব্যবহারকারীর নাম + পাসওয়ার্ড = সেশন প্রমাণীকরণ টোকেন দৃশ্যের মতো নয়? অ্যাপ্লিকেশন_আইডি এবং অ্যাপ্লিকেশন_কি কেবল ব্যবহারকারীর নাম এবং পাসওয়ার্ডের প্রতিশব্দ নয়? :) এটি পুরোপুরি ঠিক আছে যদি এটি সত্যিই এইরকম পরিস্থিতির জন্য আদর্শ অনুশীলন হয় - যেমন আমি বলেছিলাম, আমি এটি সম্পর্কে অনভিজ্ঞ - তবে আমি কেবল ভেবেছিলাম অন্য বিকল্পগুলিও থাকতে পারে ...
টম্মি

-3

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


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

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

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

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