REST এপিআই এর জন্য প্রমাণীকরণের নকশা করা


11

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

আমি অ্যাপ্লিকেশন স্ট্যাক সম্পর্কে নিম্নলিখিত তথ্যগুলির ভিত্তিতে এটি নিয়ে আসছি:

  1. ক্লায়েন্ট এবং সার্ভার .NET4 এ রয়েছে (ক্লায়েন্টের প্রোফাইলে ক্লায়েন্ট অংশ)
  2. সার্ভার WCF REST ব্যবহার করে এক্সপোজ করে
  3. আমি অ্যাপ্লিকেশনটিতে ব্যবহারকারীর নাম এবং পাসওয়ার্ডটিকে মেমরিতে রাখতে চাই না

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

  1. ক্লায়েন্টটি প্রমাণীকরণের চেষ্টা করার আগে, এটি ECDiffieHellmanCngক্লাসটি ব্যবহার করে একটি ডিফি-হেলম্যান কী জুড়ি উত্পন্ন করে ।
  2. এটি ব্যবহারকারীর নাম এবং পাসওয়ার্ডের সাথে কী জুটির সার্বজনীন অংশটি তারের সাথে প্রেরণ করে (অবশ্যই HTTPS ওভারে)।
  3. সার্ভার ব্যবহারকারীর নাম / পাসওয়ার্ডের সংমিশ্রণটিকে প্রমাণীকরণ করে, যদি সফল হয় তবে তা নিম্নলিখিতটি করে:
    1. একটি অনন্য সেশন টোকেন তৈরি করে
    2. নিজস্ব ডিএইচ কী জুড়ি তৈরি করে এবং ক্লায়েন্টের সরবরাহিত সার্বজনীন কী থেকে ভাগ করা গোপনীয়তা গণনা করে
    3. এর ডাটাবেসে সেশন টোকেন, ভাগ করা গোপনীয়তা, ব্যবহারকারী এবং "শেষ ক্রিয়া" সময় (রোলিং মেয়াদোত্তীর্ণ উইন্ডোর জন্য ব্যবহৃত) নোট করে
    4. সেশন টোকেন, এর সর্বজনীন ডিএইচ কী এবং একটি প্রমাণীকরণ সাফল্যের বার্তা দেয়
  4. ক্লায়েন্ট প্রতিক্রিয়া থেকে ডিএইচ কী নিয়ে নেয়, ভাগ করা গোপনীয়তা গণনা করে এবং টোকেন এবং গোপন উভয়ই মেমরিতে সঞ্চয় করে।

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

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

যে কোনও ছিদ্র যে কেউ এতে ঝুঁকতে পারে?


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

উত্তর:


5

নিজের আবিষ্কারের পরিবর্তে আপনার ওপেনএএম এপিআই পড়ার এবং ধার নেওয়া বিবেচনা করা উচিত।

http://forgerock.com/openam.html

ওপেনএ্যাম উইকি বিশেষভাবে সহায়ক

https://wikis.forgerock.org/confluence/display/openam/Home

আপনার তাদের উপাদানগুলি ব্যবহার করার দরকার নেই। তবে আপনি যদি তাদের এপিআই ব্যবহার করেন তবে আপনি দেখতে পাবেন যে আপনার জীবন দীর্ঘ সময়ের মধ্যে আরও সহজ হবে।


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

1
@ ম্যাট সিকার: "আপনাকে তাদের উপাদানগুলি ব্যবহার করার দরকার নেই"। আপনার নিজের আবিষ্কারের পরিবর্তে তাদের এপিআই সম্পর্কে পড়ুন।
এস .লট

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

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

2

আমি @ এসলট এর সাথে 100% সম্মতি জানাই যে আপনি নিজের রোল করতে চান না। আমি অন্য বিকল্পটি দেখার পরামর্শ দিই: উইন্ডোজ অ্যাজুরি অ্যাক্সেস কন্ট্রোল সার্ভিস (এসিএস)। এসিএসের জন্য অর্থ ব্যয় হয় তবে এটি খুব সস্তা (0.01 ডলারে 10,000 লেনদেন) এবং অবকাঠামোগত একটি ভাল চুক্তি পরিচালিত হয়। ডাব্লুআইএফ ক্লায়েন্টের উপর উপার্জনযোগ্য ged

এটি একটি মান-ভিত্তিক / দাবি-ভিত্তিক সমাধান - যা সমস্ত ক্রোধ। এটি ব্যবহার করে দেখুন WCF এবং বিশ্রাম এবং ACS একসঙ্গে ব্যবহার করে নিবন্ধ

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

শুভকামনা! -বিল

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