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