Json Web Token
প্রমাণীকরণের জন্য জেডাব্লুটি ( ) ব্যবহার করার বিষয়ে ওয়েবে প্রচুর তথ্য রয়েছে । তবে আমি একাধিক ডোমেন পরিবেশে একক সাইন-অন সমাধানের জন্য জেডাব্লুটি টোকেন ব্যবহার করার সময় প্রবাহটি কী হওয়া উচিত তার স্পষ্ট ব্যাখ্যা আমি খুঁজে পাইনি ।
আমি এমন একটি সংস্থার জন্য কাজ করি যার বিভিন্ন হোস্টে প্রচুর সাইট রয়েছে। এর ব্যবহার করা যাক example1.com এবং example2.com । আমরা একটি একক সাইন-অন সমাধান, একজন ব্যবহারকারী পরিচয় প্রমাণিত, তাহলে মানে প্রয়োজন example1.com , আমরা চাই তাকে এছাড়াও প্রামাণ করা example2.com , স্বয়ংক্রিয়ভাবে।
ব্যবহার থেকে OpenID প্রবাহ, আমি বুঝতে পারি যে ব্যবহারকারী কে প্রমাণীকরণ করতে চায় example1.com প্রথম আপনাকে পুনঃনির্দেশিত করা হবে প্রমাণীকরণ সার্ভার (অথবা OP
: "OpenID সরবরাহকারী")। ব্যবহারকারী সেই সার্ভারে অনুমোদন দেয় যা তারপরে স্বাক্ষরিত জেডাব্লুটি টোকেন সহ তাকে মূল উদাহরণ 1.com সাইটে ফিরিয়ে আনবে। (আমি বুঝতে পারি যে আরও একটি প্রবাহ রয়েছে যা মধ্যবর্তী টোকেনটি দেয় যা পরে নিজেই সত্যিকারের জেডব্লিউটি টোকেনের জন্য বিনিময় হতে পারে, তবে আমি মনে করি না এটি আমাদের জন্য প্রয়োজনীয়)) ...
সুতরাং এখন ব্যবহারকারী উদাহরণ 1.com এ ফিরে এসেছে এবং সত্যায়িত হয়! তিনি অনুরোধ করতে পারেন, Authentication
শিরোনামে JWT টোকন পাস করে এবং সার্ভার স্বাক্ষরিত JWT যাচাই করতে সক্ষম এবং তাই ব্যবহারকারীকে সনাক্ত করতে সক্ষম। নিস!
প্রথম প্রশ্ন :
কীভাবে JWT টোকন ক্লায়েন্টে সংরক্ষণ করা উচিত? এ সম্পর্কে আবারও প্রচুর তথ্য রয়েছে এবং লোকেরা মনে হয় যে Web Storage
এই ব্যবহারটি ভাল পুরানোের চেয়ে বরং চলার পথ cookies
। আমরা চাই যে JWT ব্রাউজার পুনরায় আরম্ভের মধ্যে অবিচল থাকে তাই আসুন আমরা ব্যবহার করি Local Storage
, না Session Storage
...
এখন ব্যবহারকারী তার ব্রাউজারটি পুনরায় চালু করতে পারবেন এবং জেডাব্লুটি টোকেনটির মেয়াদ শেষ না হওয়া পর্যন্ত তিনি উদাহরণ 1.com এ প্রমাণীকরণ করবেন !
এছাড়াও, যদি উদাহরণ 1.com আমাদের অন্য ডোমেনগুলিতে একটি অ্যাজাক্স অনুরোধ করা দরকার, আমি বুঝতে পারি যে সিওআরএস কনফিগার করা এটির অনুমতি দেয়। তবে আমাদের প্রধান ব্যবহারের ক্ষেত্রে ক্রস-ডোমেন অনুরোধ নয়, এটির একটি একক সাইন-অন সমাধান রয়েছে !
সুতরাং, মূল প্রশ্ন:
এখন, প্রবাহটি কী হওয়া উচিত, যদি ব্যবহারকারী উদাহরণ 2.com এ যান এবং আমরা ইতিমধ্যে তার কাছে থাকা জেডাব্লুটি টোকেন ব্যবহার করে তাকে প্রমাণীকরণ করতে চাই? Local Storage
ক্রস-ডোমেন অ্যাক্সেসের অনুমতি দেবে বলে মনে হচ্ছে না তাই এই মুহুর্তে ব্রাউজারটি উদাহরণ 2.com এ অনুরোধ করার জন্য জেডাব্লুটি টোকনটি পড়তে পারে না !
উচিত:
- ব্যবহারকারীকে আবার প্রমাণীকরণের সার্ভারে পুনঃনির্দেশিত করা হবে ? ব্যবহারকারীর জন্য প্রামাণ যখন example1.com , প্রমাণীকরণ সার্ভার তাই এই নতুন প্রমাণীকরণ অনুরোধ ব্যবহারকারী একটি কুকি সেট হতে পারে example2.com যে কুকির ব্যবহার করতে পারে দেখতে ব্যবহারকারী ইতিমধ্যে অনুমোদন যাচাই করা হয় এবং অবিলম্বে তাকে ফিরে পুননির্দেশনা example2.com একই JWT টোকেন সঙ্গে?
- অথবা ব্রাউজার, উদাহরণ 2.com এ , আবার প্রমাণীকরণের সার্ভারে না গিয়েই JWT টোকেন অ্যাক্সেস করতে পারে ? আমি দেখতে পাচ্ছি যে ক্রস-স্টোরেজ সমাধান রয়েছে তবে সেগুলি কি বহুল ব্যবহৃত হয়? তারা কি ক্রস ডোমেন এসএসও পরিবেশের প্রস্তাবিত সমাধান?
আমরা অভিনব কিছু চাই না, আমরা বেশিরভাগ ব্যবহৃত সমাধানে খুশি হব!