মোবাইল অ্যাপ্লিকেশনগুলির জন্য একটি API তৈরি করা হচ্ছে - প্রমাণীকরণ এবং অনুমোদন


189

সংক্ষিপ্ত বিবরণ

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

OAuth

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

আবশ্যকতা

  1. ব্যবহারকারী ব্যবহারকারীর নাম / পাসওয়ার্ড প্রয়োগ করে।
  2. প্রতিটি এপিআই কল কলিং অ্যাপ্লিকেশন দ্বারা চিহ্নিত করা হয়।
  3. ওভারহেড একটি সর্বনিম্ন রাখা হয় এবং লেখকের দিকটি বিকাশকারীদের জন্য স্বজ্ঞাত।
  4. প্রক্রিয়াটি শেষ ব্যবহারকারীদের (তাদের লগইন শংসাপত্রগুলি প্রকাশিত হয় না) পাশাপাশি বিকাশকারী (তাদের অ্যাপ্লিকেশন শংসাপত্রগুলি প্রকাশিত হয় না) উভয়ের জন্যই সুরক্ষিত।
  5. যদি সম্ভব হয় তবে https প্রয়োজন নেই (কোনও উপায়ে কোনও কঠিন প্রয়োজন নয়)।

বাস্তবায়নের বিষয়ে আমার বর্তমান চিন্তাভাবনা

একটি বহিরাগত বিকাশকারী একটি API অ্যাকাউন্টের জন্য অনুরোধ করবে। তারা একটি apikey এবং apisecret পাবেন। প্রতিটি অনুরোধের জন্য কমপক্ষে তিনটি প্যারামিটারের প্রয়োজন হবে।

  • apikey - নিবন্ধে বিকাশকারীকে দেওয়া
  • টাইমস্ট্যাম্প - প্রদত্ত এপিকিটির জন্য প্রতিটি বার্তার এক অনন্য সনাক্তকারী হিসাবে দ্বিগুণ
  • হ্যাশ - টাইমস্ট্যাম্পের একটি হ্যাশ + এপিসেক্রেট

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

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

উপসংহার

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

এলোমেলো চিন্তা / বোনাস প্রশ্ন

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

হ্যাশ সম্পর্কে কথা বলতে বলতে, এমডি 5 বনাম এইচএমএকে-শ 1 সম্পর্কে কী বলা যায়? পর্যাপ্ত দীর্ঘ ডেটা (অর্থাত্ এপিসেক্রেট) দিয়ে সমস্ত মানগুলি হ্যাশ করা কি সত্যই আসে যায়?

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


1
আরও কয়েকটি মন্তব্য / পরামর্শ পাওয়ার আশা ছিল। প্রশ্নটি কি খুব অস্পষ্ট / অস্পষ্ট?
jsuggs

6
প্রশ্নটি নিখুঁত তবে প্রায় ২ বছর পরেও, ওউথ বাস্তবায়নগুলি তাত্ক্ষণিক বলে মনে হচ্ছে ... আপনি উপরে উল্লিখিত ঠিক কী অর্জন করতে আমার সবচেয়ে কঠিন সময় কাটাচ্ছে। আমার একটি অতিরিক্ত মাত্রা রয়েছে: আমি লগইননাম / পাসওয়ার্ড জুড়িটি ব্যবহার করতে চাই না - আমি অ্যান্ড্রয়েড / আইওএসে গুগল পরিচয় যাচাইকরণ ব্যবহার করতে চাই (ডাব্লুডাব্লুএফ একটি "প্রায় বিলুপ্তপ্রায় প্রজাতি" হিসাবে প্রতীক হিসাবে ঘোষণা করেছিল) এবং আমি এর জন্য বিকাশ করতে অস্বীকার করেছি উইন্ডোজ মোবাইল (আজকাল তারা যাই বলুক না কেন)
টনি গিল

8
তার সবাই যতটা OAuth 2.0 Ive প্রস্তাব দেওয়া এখনো একটি পরিষ্কার, সহজ টিউটোরিয়াল বা উদাহরণস্বরূপ যে সাধারণ ইংরেজি ব্যবহারের পদক্ষেপ, প্রয়োজনীয়তা ব্যাখ্যা করতে এবং donts ect, না .... এটি হাস্যকর যে
ChuckKelly

2
OAuth2.0 এর এই নির্দিষ্ট প্রবাহে (রিসোর্স মালিকের পাসওয়ার্ড ফ্লো) পড়ুন। ওয়েবসাইটে পুনর্নির্দেশ নেই। techblog.hybris.com/2012/06/11/…
ফ্র্যাংকলিন

1
আমিও একই উত্তর খুঁজছি। আমি একটি ভাল নিবন্ধ পেয়েছি যা সম্প্রতি লেখা হয়েছিল। আশা করি এটা কাজে লাগবে. stormpath.com/blog/the-ultimate-guide-to-mobile-api- সুরক্ষা
নতুন

উত্তর:


44

আমার প্রকল্পগুলিতে এর লগইন অংশটি করার জন্য আমি যেভাবে ভাবছি তা হ'ল:

  1. লগইন করার আগে ব্যবহারকারী login_tokenসার্ভার থেকে একটি অনুরোধ করে। এগুলি অনুরোধের ভিত্তিতে সার্ভারে উত্পন্ন এবং সঞ্চয় করা হয় এবং সম্ভবত এটির একটি সীমিত জীবনকাল থাকে।

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

  3. সার্ভারটি login_tokenযা যা তৈরি করেছে তা যাচাই করে এবং এর বৈধ login_tokenএর তালিকা থেকে এটিকে সরিয়ে দেয় । তারপরে সার্ভারটি ব্যবহারকারীর পাসওয়ার্ডের তার সঞ্চিত হ্যাশটির সাথে একত্রিত হয় login_tokenএবং নিশ্চিত করে যে এটি জমা দেওয়া সংযুক্ত টোকেনের সাথে মিলে। যদি এটি মেলে আপনি আপনার ব্যবহারকারীকে প্রমাণীকরণ করেছেন।

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


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

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

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

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

14

এটি একের মধ্যে অনেকগুলি প্রশ্ন, আমার ধারণা অনেক লোকই শেষ পর্যন্ত পড়তে পারেনি :)

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

একটি বিকল্প যা আমি এখনও ব্যবহার করি নি তবে আমি ডিভাইস-বান্ধব বিকল্প হিসাবে OAuth- এর xauth হিসাবে অনেক কিছু শুনেছি । এটি একবার দেখুন এবং আপনি যদি এটি ব্যবহার করেন তবে আমি আপনার ইমপ্রেশনগুলি কী তা শুনতে আগ্রহী হব।

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

সৌভাগ্য, যে সাহায্য করে আশা করি :)


উত্তরের জন্য ধন্যবাদ. আমি এক্সআউথটি সন্ধান করছি এবং আমি যে পথে যাচ্ছি সেটাই হতে পারে যাতে আমি একটি ওআউথ ইনস্টলেশন শেষ করতে পারি, যা এপিআইয়ের সাথে ইন্টারঅ্যাক্ট করার জন্য আরও মানসম্পন্ন প্রক্রিয়া তৈরি করে।
jsuggs

9

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

এটি কেস হিসাবে ধরে নেওয়া হচ্ছে, তবে আমি নীচে এটির কাছে পৌঁছে যাব (তবে কেবল 'আমি জাভা বিকাশকারী তাই একটি সি # লোক এটি আলাদাভাবে করতে পারে):

RESTful প্রমাণীকরণ এবং অনুমোদন পরিষেবা

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

ক্লায়েন্ট পক্ষের সুরক্ষা গ্রন্থাগার / অ্যাপ্লিকেশন

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

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

স্থানীয় মোবাইল অ্যাপ্লিকেশনটির ক্ষেত্রে, দেখে মনে হচ্ছে আপনি নিম্নলিখিত সমাধানগুলির সমাধান করছেন:

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

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

আশা করি এটি আপনার উদ্যোগের সাথে সহায়তা করে এবং সৌভাগ্য। আপনি যদি আরও তথ্য চান, আমাকে জানান - আমি স্প্রিং সিকিউরিটি, এসিএল এবং এর মত ভিত্তিক বেশ কয়েকটি ওয়েব অ্যাপ্লিকেশন লিখেছি।


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

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

এছাড়াও, সিএএস প্রমাণীকরণের প্রোটোকলের এই বিবরণটি কার্যকর হতে পারে: jasig.org/cas/protocol
গ্যারি

9

টুইটার বাহ্যিক অ্যাপ্লিকেশন ইস্যুটিকে ওআউথ-এ সম্বোধন করেছে যাতে তারা xAuth বলে var । দুর্ভাগ্যক্রমে এই নামের সাথে ইতিমধ্যে অন্যান্য স্কিমগুলির আধিক্য রয়েছে যাতে এটি বাছাই করা বিভ্রান্তিকর হতে পারে।

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

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


2
আমার এও উল্লেখ করা উচিত যে এটি 'স্কিপ রিকোয়েস্ট টোকেন' এর মতো মনে হচ্ছে শেষ পয়েন্টটি OAuth 2 তে চলেছে, এটি বর্তমান খসড়াটিতে "পাসওয়ার্ড" অ্যাক্সেস অনুদানের ধরণ হিসাবে তালিকাভুক্ত রয়েছে। : অধ্যায় 4.1.2 দেখুন tools.ietf.org/html/draft-ietf-oauth-v2-10#section-4.1.2
lantius

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

6

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

শুরুতে, কোনও মোবাইল এপিআই সুরক্ষিত করার চেষ্টা করার সময় সবচেয়ে গুরুত্বপূর্ণ বিষয়টি হ'ল এটি আপনার পক্ষে কতটা মূল্যবান । যে কোনও ব্যক্তি মজাদার জন্য কিছু করেন তার পক্ষে ব্যাঙ্কের সঠিক সমাধানটি সঠিক সমাধানের চেয়ে আলাদা।

প্রস্তাবিত সমাধানটিতে আপনি উল্লেখ করেছেন যে সর্বনিম্ন তিনটি প্যারামিটারের প্রয়োজন হবে:

  • apikey - নিবন্ধে বিকাশকারীকে দেওয়া
  • টাইমস্ট্যাম্প - প্রদত্ত এপিকিটির জন্য প্রতিটি বার্তার এক অনন্য সনাক্তকারী হিসাবে দ্বিগুণ
  • হ্যাশ - টাইমস্ট্যাম্পের একটি হ্যাশ + এপিসেক্রেট

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

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

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

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

এর বাইরে আপনি সহজেই আমার দিনের কাজের ডোমেনে প্রবেশ শুরু করতে পারেন। যাইহোক, এটি এপিআইগুলি সুরক্ষিত করার আরেকটি দিক যা আমি মনে করি যে এটি গুরুত্বপূর্ণ এবং ফ্ল্যাগ আপ করতে চেয়েছিল।

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