একটি মোবাইল অ্যাপ্লিকেশনটির জন্য সঠিক OAuth 2.0 প্রবাহ কী


89

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

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

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


4
প্রশ্নটি হবে - এটি কি সর্বোচ্চ অগ্রাধিকারের মতো যা ব্যবহারকারীর প্রথম লগইন করার পরে আর কখনও পাসওয়ার্ড টাইপ করতে হয়নি?
সর্বনিম্ন 14

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

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

4
দয়া করে ওয়েব ভিউগুলি এড়িয়ে চলুন (যদি না আপনি পুরো স্ট্যাকের মালিক হন এবং সামাজিক লগইন ব্যবহার না করেন) যা পাসওয়ার্ডের সাথে আপস করার সম্ভাবনাটি উন্মুক্ত করে। যখন আমাকে তৃতীয় পক্ষের এমবেড থাকা ব্যবহারকারী-এজেন্ট দ্বারা শংসাপত্রগুলির জন্য জিজ্ঞাসা করা হয় আমি অ্যাপটি আনইনস্টল করব। কিছু API গুলি এখন এমন ধরনের এই এক হিসাবে যেমন ঐক্যবদ্ধতার নিষিদ্ধ dev.fitbit.com/docs/oauth2 আমি অন্য উত্তর প্রদান করে আরও এই ধারণার কিছু (নির্মল stackoverflow.com/a/38582630/752167 )
ম্যাট সি

উত্তর:


91

স্পষ্টতা: মোবাইল অ্যাপ্লিকেশন = নেটিভ অ্যাপ্লিকেশন

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

নেটিভ অ্যাপ্লিকেশন OAuth2 সেরা অভ্যাস

আপনি যে কোনও পন্থা বেছে নিন (বিবেচনা করার জন্য কয়েকটি বাণিজ্য অফস রয়েছে), আপনার OAuth2: https://tools.ietf.org/html/rfc8252 ব্যবহার করে নেটিভ অ্যাপ্লিকেশনগুলির জন্য এখানে বর্ণিত সেরা অনুশীলনের দিকে মনোযোগ দেওয়া উচিত

নিম্নলিখিত বিকল্পগুলি বিবেচনা করুন

অন্তর্নিহিত

আমি অন্তর্ভুক্ত ব্যবহার করা উচিত?

বিভাগ 8.2 থেকে উদ্ধৃতি https://tools.ietf.org/html/rfc8252#section-8.2

ওআউথ ২.০ নিখুঁত অনুদান অনুমোদনের প্রবাহ (ওআউথ ২.০ [আরএফসি 6766] এর বিভাগ 4.2 এ সংজ্ঞায়িত) সাধারণত ব্রাউজারে অনুমোদনের অনুরোধ সম্পাদন এবং ইউআরআই ভিত্তিক আন্তঃ অ্যাপ যোগাযোগের মাধ্যমে অনুমোদনের প্রতিক্রিয়া গ্রহণের অনুশীলনের সাথে কাজ করে।
তবে যেহেতু অন্তর্নিহিত প্রবাহটি PKCE [RFC7636] দ্বারা সুরক্ষিত করা যায় না (যা বিভাগ 8.1 এ আবশ্যক) সেহেতু দেশীয় অ্যাপ্লিকেশন সহ অন্তর্নিহিত প্রবাহের ব্যবহার অনুমোদিত নয়

অন্তর্নিহিত প্রবাহের মাধ্যমে মঞ্জুরিপ্রাপ্ত অ্যাক্সেস টোকেনগুলি ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই রিফ্রেশ করা যায় না, অনুমোদনের কোড অনুদান প্রবাহ তৈরি করে - যা রিফ্রেশ টোকেন জারি করতে পারে - দেশীয় অ্যাপ অনুমোদনের জন্য আরও কার্যকর বিকল্প যার জন্য অ্যাক্সেস টোকেনকে রিফ্রেশ দরকার require

অনুমোদন কোড

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

নীচে থেকে উদ্ধৃতি: https ://dev. Fitbit.com/docs/oauth2/

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

দ্রষ্টব্য: বিতরণকৃত কোডে কখনই আপনার ক্লায়েন্টের গোপনীয়তা রাখবেন না, যেমন অ্যাপ্লিকেশন স্টোর বা ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্টের মাধ্যমে ডাউনলোড করা অ্যাপ্লিকেশন।

যে অ্যাপ্লিকেশনগুলির একটি ওয়েব পরিষেবা নেই তাদের অন্তর্ভুক্ত গ্রান্ট ফ্লো ব্যবহার করা উচিত।

উপসংহার

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

একটি দুর্দান্ত পড়া এখানে https://auth0.com/blog/oauth-2-best-practices-for-native-apps/

আর একটি হ'ল https://www.oauth.com/oauth2-servers/oauth-native-apps/ যা জানিয়েছে

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

পিকেসিই বিবেচনা

আপনার এখানে PKCE বিবেচনা করা উচিত যা এখানে বর্ণিত হয়েছে https://www.oauth.com/oauth2-servers/pkce/

বিশেষত, আপনি যদি অনুমোদনের সার্ভারটিও প্রয়োগ করে থাকেন তবে https://www.oauth.com/oauth2-servers/oauth-native-apps/checklist-server-support-native-apps/ বলেছে যে আপনার উচিত

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

ওয়েব ভিউ বিবেচনা

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

OAuth 2.0 প্রমাণীকরণ পৃষ্ঠা এম্বেড করার যে কোনও প্রয়াসের ফলস্বরূপ আপনার অ্যাপ্লিকেশনটি ফিটবিত এপিআই থেকে নিষিদ্ধ করা হবে।

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

নেটিভ অ্যাপ্লিকেশনগুলির জন্য, এর অর্থ অনুমোদনের পৃষ্ঠাটি অবশ্যই ডিফল্ট ব্রাউজারে খুলতে হবে। নেটিভ অ্যাপ্লিকেশনগুলি কাস্টম ইউআরএল স্কিমগুলি ইউআরআইকে পুনর্নির্দেশ হিসাবে ব্রাউজার থেকে অ্যাপ্লিকেশনের অনুমতির অনুরোধে পুনঃনির্দেশ করতে ব্যবহার করতে পারে।

আইওএস অ্যাপ্লিকেশনগুলি অ্যাপটি সাফারিটিতে স্যুইচ করার পরিবর্তে এসএফএসফারিভিউ কনট্রোলার ক্লাস ব্যবহার করতে পারে। WKWebView বা UIWebView শ্রেণীর ব্যবহার নিষিদ্ধ।

অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি অ্যাপ্লিকেশনটিকে ডিফল্ট ব্রাউজারে স্যুইচ করার পরিবর্তে Chrome কাস্টম ট্যাব ব্যবহার করতে পারে। ওয়েবভিউ ব্যবহার নিষিদ্ধ।

আরও স্পষ্ট করতে, এখানে সর্বোত্তম অনুশীলন লিঙ্কের পূর্ববর্তী খসড়াটির এই বিভাগের একটি উদ্ধৃতি দেওয়া হয়েছে

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

এমনকি বিশ্বস্ত প্রথম পক্ষের অ্যাপ্লিকেশনগুলির দ্বারা ব্যবহৃত হয়ে থাকলেও এম্বেড করা ব্যবহারকারী-এজেন্টরা প্রয়োজনের তুলনায় আরও শক্তিশালী শংসাপত্র অর্জন করে ন্যূনতম সুযোগ-সুবিধার নীতি লঙ্ঘন করে, সম্ভাব্য আক্রমণ আক্রমণটিকে বাড়িয়ে তোলে।

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

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

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

উপরের কারণে এম্বেড থাকা ব্যবহারকারী-এজেন্টগুলির ব্যবহারের সুপারিশ করা হয় না, কেবলমাত্র যেখানে কোনও বিশ্বস্ত প্রথম পক্ষের অ্যাপটি অন্যান্য অ্যাপ্লিকেশনগুলির জন্য বাহ্যিক ব্যবহারকারী-এজেন্ট হিসাবে কাজ করে বা একাধিক প্রথম পক্ষের অ্যাপ্লিকেশনগুলির জন্য একক সাইন-অন সরবরাহ করে except

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

কিছু আকর্ষণীয় পয়েন্টগুলি এখানেও উত্থাপিত হয়েছে: /security/179756/why-are-developers- using-ededded-user-agents-for-3rd-party-auth- কি-are- the- ক


4
গুগল 20 এপ্রিল, 2017 বিকাশকারীদের
ম্যাট সি

অবগতির জন্য এই উত্তর শুরুর দস্তাবেজটি রেফারেন্স যদি আর OAuth এর 2.0 দেশীয় Apps এর জন্য খসড়া না - tools.ietf.org/html/rfc8252
Kostiantyn Sokolinskyi

ধন্যবাদ @ KostiantynSokolinskyi, সেই অনুযায়ী আরএফসি-র লিঙ্কের সাথে সম্পাদিত যা এখন আর খসড়া নয়
ম্যাট সি

@ ম্যাটসি নতুন ব্যবহারকারীর নিবন্ধকরণ কার্যকর করার সবচেয়ে ভাল উপায় কী? আমাদের এটি অ্যাপের মধ্যে বা আইডিপিতে করা উচিত? ব্যবহারকারীর পোস্ট নিবন্ধকে স্বয়ংক্রিয়ভাবে লগইন করা সম্ভব? stackoverflow.com/questions/60187173/...
Yashvit

দুঃখিত আমি কিছু বিবরণ সম্পর্কে বিভ্রান্ত ... আপনি দয়া করে একবার দেখতে পারেন? ধন্যবাদ! লিংক ---> stackoverflow.com/q/61313694/4619958
ch271828n

25

দুর্ভাগ্যক্রমে, আমি মনে করি না যে এই প্রশ্নের সুস্পষ্ট উত্তর আছে। যাইহোক, আমি এখানে চিহ্নিত বিকল্পগুলি:

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

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

    • Https://developers.google.com/accounts/docs/OAuth2Installedapp এ বর্ণিত কৌশলটি ব্যবহার করুন , যেখানে কোনও বিশেষ redirect_uri(যেমন urn:ietf:wg:oauth:2.0:oob) ক্লায়েন্ট অ্যাপটিতে পুনর্নির্দেশের পরিবর্তে অনুমোদনের কোডটি দেখানোর জন্য অনুমোদনের শেষ পয়েন্টকে সংকেত দেয়। ব্যবহারকারী এই কোডটি ম্যানুয়ালি অনুলিপি করতে পারেন বা অ্যাপ্লিকেশনটি HTML নথি শিরোনাম থেকে এটি পাওয়ার চেষ্টা করতে পারে।
    • localhostডিভাইসে একটি সার্ভার ব্যবহার করুন (পোর্ট পরিচালনা সহজ নাও হতে পারে)।
    • একটি কাস্টম ইউআরআই স্কিম ব্যবহার করুন (উদাহরণস্বরূপ myapp://...) যখন সম্মানজনকভাবে কোনও নিবন্ধিত "হ্যান্ডলার" ট্রিগার করে (বিশদটি মোবাইল প্ল্যাটফর্মের উপর নির্ভর করে)।
    • যদি উপলভ্য থাকে তবে HTTP পুনর্নির্দেশ প্রতিক্রিয়াগুলি নিয়ন্ত্রণ এবং অ্যাক্সেস করতে একটি বিশেষ "ওয়েব ভিউ" যেমন উইন্ডোজ 8- এ ওয়েব অ্যাটেনটিকেশন ব্রোকার ব্যবহার করুন।

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

পেড্রো


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

4
আপনি যদি ক্লায়েন্টকে ওয়েব ভিউতে বা ক্লায়েন্ট অ্যাপ্লিকেশনটিতে পাসওয়ার্ড টাইপ করতে চান তবে এটি সবই নির্ভর করে। যদি সম্ভব হয় তবে আমি ক্লায়েন্ট অ্যাপ্লিকেশনটিকে পছন্দ করব - তারপরে অবিলম্বে একটি অ্যাক্সেস / রিফ্রেশ টোকেনের সাথে গোপনীয়তার আদান প্রদান করব।
সর্বনিম্ন ব্যক্তিগত

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

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

4
অন্তর্ভুক্তটি রিফ্রেশ টোকেন ওওবি সমর্থন করে না। পাবলো এর দৃশ্যে - আমি স্পষ্টভাবে আরও প্রবাহের প্রস্তাব দেব। একই কোম্পানির ব্যাকএন্ডের বিপরীতে অ্যাপ্লিকেশন মোতায়েনের মতো সাউন্ডস।
সর্বনিম্ন ব্যক্তিগত

9

টিএল; ডিআর: পিকেসিই সহ অনুমোদনের কোড অনুদান ব্যবহার করুন

1. অন্তর্ভুক্ত অনুদান প্রকার

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

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

এবং একসাথে এই সত্যের সাথে, এটি আপনাকে অ্যাক্সেস টোকেনকে রিফ্রেশ করতে দেয় না, আরও ভাল এড়াতে।

২. অনুমোদনের কোড অনুদানের প্রকার

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

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

আদর্শ সমাধান নয় তবে মোবাইল ডিভাইসে ওআউথ করার আরও একটি নতুন উপায় রয়েছে: কোড এক্সচেঞ্জের প্রুফ কী

৩.পিকেসিই সহ অনুমোদনের কোড অনুদানের প্রকার (কোড এক্সচেঞ্জের প্রুফ কী)

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

পিকেসিই (আরএফসি 7636) এমন একটি কৌশল যা সর্বজনীন ক্লায়েন্টকে সুরক্ষিত করার জন্য যা ক্লায়েন্টের গোপনীয়তা ব্যবহার করে না।

এটি প্রাথমিকভাবে দেশী এবং মোবাইল অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয়, তবে কৌশলটি যে কোনও পাবলিক ক্লায়েন্টের জন্যও প্রয়োগ করা যেতে পারে। অনুমোদনের সার্ভারের জন্য এটির অতিরিক্ত সমর্থন প্রয়োজন, সুতরাং এটি কেবলমাত্র নির্দিষ্ট সরবরাহকারীদের পক্ষে সমর্থিত।

https://oauth.net/2/pkce/ থেকে


-4

আপনার মোবাইল অ্যাপ্লিকেশনটিতে একটি ওয়েবভিউ ব্যবহার করা অ্যান্ড্রয়েড প্ল্যাটফর্মে OAuth2.0 প্রোটোকল প্রয়োগের সাশ্রয়ী উপায় হওয়া উচিত।

Redirect_uri ক্ষেত্রের জন্য, আমি মনে করি http://localhostএকটি ভাল পছন্দ এবং আপনার অ্যাপ্লিকেশনটির মধ্যে আপনাকে কোনও এইচটিটিপি সার্ভার পোর্ট করতে হবে না, কারণ আপনি ক্লাসে onPageStartedফাংশনটির বাস্তবায়নটিকে ওভাররাইড করতে পারেন WebViewClientএবং http://localhostআপনি urlপরামিতিটি পরীক্ষা করার পরে ওয়েব পৃষ্ঠা লোড করা বন্ধ করতে পারেন ।

public void onPageStarted(final WebView webView, final String url,
        final Bitmap favicon) {}

4
OAuth2 ব্যবহার করে নেটিভ অ্যাপ্লিকেশনগুলির সেরা অনুশীলনগুলি: সরঞ্জাম. ietf.org/html/draft-wdenniss-oauth-native-apps
ম্যাট সি

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

4
নেটিভ অ্যাপ্লিকেশন সেরা অনুশীলনের নথির জন্য OAuth 2.0 খসড়াটির আপডেট সংস্করণটি সরঞ্জামগুলিতে
জেফ ওলসন

-5

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


সুবিধাজনক ব্যবহারকারীর অভিজ্ঞতা সরবরাহ করার পরেও আমরা দেখব শিল্পটি এই পদ্ধতির থেকে দূরে সরে গেছে। ওয়েব দর্শনগুলি পাসওয়ার্ডগুলির সাথে আপস করার সম্ভাবনাটি খুলার সাথে সাথে, যখন আমাকে এম্বেড থাকা ব্যবহারকারী-এজেন্ট দ্বারা শংসাপত্রের জন্য জিজ্ঞাসা করা হয় আমি অ্যাপটি আনইনস্টল করব। কিছু এপিআই এখন এমন একীকরণ যেমন নিষিদ্ধ করে যেমন এই এক dev.fitbit.com/docs/oauth2
ম্যাট সি

OAuth2 ব্যবহার করে নেটিভ অ্যাপ্লিকেশনগুলির সেরা অনুশীলনগুলি: সরঞ্জাম. ietf.org/html/draft-wdenniss-oauth-native-apps
ম্যাট সি

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

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

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