احراز هویت در اپلیکیشن اندروید
توی این مقاله میخوام بهتون روشی رو یاد بدم که بدون مشکلات تحریمی و بدون نیاز به سرور یک سیستم رایگان احراز هویت در اپلیکیشن اندروید خودتون بسازید.
قراره از یک ابزار جالب و کاربردی به نام Auth0 صحبت کنیم و ببینیم چطور میتونیم ازش توی برنامههای اندرویدی استفاده کنیم. حتماً برای شما هم پیش اومده که بخواید به اپلیکیشنتون قابلیت ورود و ثبتنام اضافه کنید و دلتون بخواد این کار رو با روشی امن و راحت انجام بدید. Auth0 دقیقاً همون چیزی هست که بهش نیاز دارید! پس با ما همراه باشید تا قدم به قدم یاد بگیریم چطور از این سرویس فوقالعاده استفاده کنیم.
آشنایی با Auth0
اول از همه باید شمارو با Auth0 آشنا کنم پس بریم ببینیم که اصلا چی هست و کاربردش چیه بعد از اون هم میریم سراغ آموزش و کدنویسی برای اتصال به Auth0.
Auth0 چی هست و چه کارهایی میتونه بکنه؟
اگه بخوایم خیلی اصولی تعریف کنیم میشه گفت Auth0 یک پلتفرم مدیریت و احراز هویت هست که به برنامه نویسا کمک میکنه تا به راحتی و به سرعت بدون نیاز به نوشتن کدهای زیاد سمت سرور، قابلیت ورود، ثبتنام و مدیریت کاربران را به اپلیکیشنهای خود اضافه کنن.
auth0 از نظر امنیت واقعا استاندارده و پروتکلهایی مثل OIDC یا همون OpenID Connect و OAuth2 رو پشتیبانی میکنه. حتی میتونید برای ورود کاربرا از طریق اکانت گوگل یا شبکههای اجتماعی مثل لینکدین، فیسبوک و غیره هم ازش استفاده کنید.
چرا باید از Auth0 استفاده کنیم؟
جوابش واضحه چون کلی خدمات رایگان بهمون میده و خیلی هم امنه برای مثال شرکت open ai که سازنده chat gpt هستش هم برای احراز هویت کاربراش از auth0 استفاده میکنه. در ادامه به بعضی از این موارد اشاره میکنم.
سادهسازی فرآیندهای احراز هویت
Auth0 کار رو برای احراز هویت در اپلیکیشن اندروید خیلی راحت کرده. با چند خط کد میتونید قابلیت ورود و ثبتنام رو به اپلیکیشنتون اضافه کنید، بدون دردسر و پیچیدگی.
این کار رو اگه خودتون بخواید انجام بدید اول باید بیاید در سمت موبایل با هر تکنولوژی که کار میکنید (xml یا کامپوز) صفحه لاگین و صفحه رجیستر رو بسازید بعد بیاید اینو با وب سرویس وصل کنید به سرورتون بعد برید سمت سرور باز بشینید با پایتون یا PHP یا هر تکنولوژی دیگهای کد بزنید که احراز هویت انجام بده تازه اگه سوتی نداده باشید و کلی باگ امنیتی بوجود نیارید.
امنیت بالا
یکی از چیزای خیلی باحال Auth0 اینه که با پروتکلهای امنیتی استاندارد و ابزارهای پیشرفته مثل احراز هویت چند مرحلهای (MFA)، امنیت اپلیکیشن شما رو تضمین میکنه. اینجوری کاربران هم خیالشون راحت میشه که اطلاعاتشون امنه.
صرفهجویی در زمان و هزینه
با Auth0 دیگه لازم نیست کلی زمان و هزینه صرف کنید تا کدهای پیچیده برای احراز هویت در اپلیکیشن اندروید بنویسید. Auth0 این کارها رو براتون انجام میده و شما میتونید تمرکزتون رو روی بقیه قسمتهای اپلیکیشن بذارید.
انعطافپذیری
Auth0 خیلی منعطفه و از انواع روشهای ورود و ثبتنام پشتیبانی میکنه. میتونید ورود با ایمیل، شبکههای اجتماعی یا حتی ورود سفارشی رو به راحتی پیادهسازی کنید.
تازه میتونید تا حدودی صفحه ورودتون رو هم کاستومایز کنید.
مقیاسپذیری
چه اپلیکیشنتون کوچیک باشه و چه بزرگ، Auth0 جواب میده. با رشد اپلیکیشنتون، Auth0 هم باهاتون رشد میکنه و میتونید بدون نیاز به تغییرات اساسی، تعداد زیادی کاربر و درخواست ورود رو مدیریت کنید. میتونید از طریق داشبوردی که در اختیارتون میذاره تمام یوزرهاتون رو بررسی کنید و متا دیتاهایی که دارن رو چک کنید یا تغییر بدید.
در ادامه مقاله بهتون میگم این متا دیتاها چی هستن و به چه دردی میخورن.
پشتیبانی از تکنولوژیهای مختلف
Auth0 با هر تکنولوژی کنار میاد یعنی اینطوری نیست که شما فقط توی اپلیکیشن اندرویدتون ازش استفاده کنید. میتونید اون رو به اپلیکیشن دسکتاپ و IOS هم وصل کنید و تمام این نسخهها یک دیتابیس منسجم و منظم دارن که هر تغییری توش اعمال بشه، توی همهی نسخههاتون اعمال میشه.
شاید با خودتون فکر کرده باشید که خب فایربیس هم همین کارارو واسمون انجام میده دیگه ولی پیشنهاد میکنم ادامه مقاله رو بخونید تا متوجه تفاوتهای مهم این دوتا بشید.
مقایسه Auth0 با فایربیس
وقتی صحبت از اضافه کردن قابلیت ورود و ثبتنام و احراز هویت در اپلیکیشن اندروید میشه، ابزارهای زیادی وجود دارن که میتونید ازشون استفاده کنید. دو تا از معروفترین این ابزارها Auth0 و Firebase هستن. اما وقتی موضوع استفاده در ایران باشه، یکم داستان دار میشه! بیایید ببینیم چرا Auth0 میتونه گزینه بهتری نسبت به Firebase باشه، مخصوصاً برای توسعهدهندههای ایرانی.
1. تحریمها و شیلترینگ
- Firebase: متاسفانه سرویسهای Firebase به خاطر تحریمهای ظالمانه، در ایران درست کار نمیکنن و دسترسی به بسیاری از امکاناتش محدود شده. این موضوع میتونه برای دولوپرهای ایرانی دردسرساز باشه و نیاز به راهحلهای جایگزین رو بیشتر کنه.
- Auth0: برعکس فایربیس، Auth0 به خوبی در ایران کار میکنه و تحریمها تأثیر چندانی روی عملکردش نداره.یعنی شما میتونید بدون نگرانی از محدودیتها از این سرویس استفاده کنید و از امکانات متنوعش بهره ببرید.
2. سادگی و سرعت پیادهسازی
- Firebase: یکی از مزایای بزرگ Firebase، یکپارچگی کاملش با سایر سرویسهای گوگل و سادگی پیادهسازیشه. اما اگر شما در ایران باشید و دسترسی به این سرویسها نداشته باشید، این خوبی، عملاً به یک چالش تبدیل میشه.
- Auth0: همون سادگی و سرعت پیادهسازی رو داره، با این تفاوت که محدودیتهای تحریم رو نداره و به راحتی میتونید ازش استفاده کنید. داکیومنتهای جامع و ساپورت خوب Auth0 هم کمک میکنه که به سرعت و با کمترین دردسر، قابلیت ورود و ثبتنام رو به اپلیکیشنتون اضافه کنید.
3. امکانات و انعطافپذیری
- Firebase: امکانات زیادی مثل دیتابیس، پیامرسانی، آنالیز و … رو در اختیار شما قرار میده که واقعا با امکانات Auth0 قابل مقایسه نیست اما چه فایده وقتی واسه ما قابل استفاده نیست؟
- Auth0: به طور خاص فقط برای احراز هویت و مدیریت کاربران طراحی شده و امکانات بسیار پیشرفتهای رو در این زمینه بهمون میده. این سرویس از پروتکلهای مختلفی مثل OAuth2، OpenID Connect و SAML پشتیبانی میکنه. حالا که انقدر اسمشون رو آوردیم در ادامه یک توضیح مختصری هم در مورد این پروتکلها بهتون میدم.
4. پشتیبانی از چندین روش لاگین و رجیستر
- Firebase: از ارائهدهندگان مختلفی مثل گوگل، فیسبوک و توییتر برای ورود پشتیبانی میکنه، اما بازم به دلیل تحریمها ممکنه دسترسی به این سرویسها محدود باشه.
- Auth0: از انواع شبکههای اجتماعی پشتیبانی میکنه و میتونید به راحتی از گوگل، فیسبوک، لینکدین برای ورود کاربران استفاده کنید.
راستی اگر میخواید بیشتر با فایربیس آشنا بشید این مقاله میتونه کمکتون کنه.
آشنایی مختصر با پروتکلهای احراز هویت در اپلیکیشن اندروید
خب تا اینجای کار با کاربرد Auth0 و تفاوتش با فایربیس آشنا شدید اما توی صحبتهامون چند باری اسم پروتکلهای احراز هویتی رو بردم که شاید خیلیهاتون باهاش آشنا نباشید واسه همین اینجا قراره در موردش صحبت کنیم. اول بیاید ببینیم اصلا پروتکل یعنی چی؟
پروتکلها چی هستن و چی کار میکنن؟
پروتکل در احراز هویت در اپلیکیشن اندروید به معنی یه جور قرارداد یا قاعده هست که تعیین میکنه چطور دو سیستم یا دستگاه با همدیگه ارتباط برقرار کنن و اطلاعات رد و بدل کنن. این قاعدهها کمک میکنن که همه چیز منظم و قابل فهم باشه، درست مثل اینکه دو نفر با زبون مشترک حرف بزنن. مثلا شما زمانی که میخوای بین کلاینت (اپلیکیشن موبایل) و سرور ارتباط برقرار کنی و اطلاعات رد و بدل کنی باید از پروتکلهایی مثل http استفاده کنی.
OAuth2
OAuth2 یه پروتکل یا همون قاعدهست برای اینکه به اپلیکیشنهای دیگه اجازه بدیم به دادههامون دسترسی داشته باشن، بدون اینکه پسورد اصلیمون رو بهشون بدیم. مثلاً وقتی با اکانت گوگل یا فیسبوک وارد یه سایت میشید، از OAuth2 استفاده میشه. اینجوری امنیت بیشتره و نیازی به به اشتراکگذاری پسورد ندارید.
وقتی میگیم کاربرد OAuth2 برای اینه که به اپلیکیشنهای دیگه اجازه بدیم به دادههامون دسترسی داشته باشن، منظورمون اینه که مثلاً شما توی یه سایت میخواید وارد بشید یا یه کاری انجام بدید، و اون سایت نیاز داره به اطلاعات شما (مثل اسم، فامیل، ایمیل یا لیست دوستاتون توی فیسبوک) دسترسی داشته باشه. حالا به جای اینکه شما برید و پسورد فیسبوک یا گوگلتون رو به اون سایت بدید (که خیلی خطرناکه)، OAuth2 یه راه امنتر و راحتتر بهمون میده.
OpenID Connect
OpenID Connect یه لایه اضافه روی OAuth2 هست که کارش احراز هویت کاربرهاست. یعنی علاوه بر دادن دسترسی به دادهها، تایید میکنه که شما واقعاً همون کسی هستید که میگید. این پروتکل به اپها کمک میکنه تا بتونن اطلاعات اولیه مثل اسم و ایمیل شما رو بگیرن و مطمئن بشن که شما همونی هستید که وارد شدید.
SAML
SAML یا (Security Assertion Markup Language) یه پروتکل دیگهست که بیشتر توی سازمانها و شرکتها استفاده میشه. این پروتکل کمک میکنه که کاربرها با یک بار وارد شدن (SSO) بتونن به چندین سرویس مختلف دسترسی داشته باشن، بدون اینکه لازم باشه برای هر کدوم جداگانه لاگین کنن. مثلاً وقتی توی یک شرکت با یک بار وارد شدن به اکانت شرکت، به ایمیل، فایلها و سایر سرویسها دسترسی دارید، از SAML استفاده شده.
پیاده سازی احراز هویت در اپلیکیشن اندروید با استفاده از Auth0
دیگه وقتش شد که بریم و در عمل ببینیم چطور میشه ازش توی یک پروژه اندرویدی استفاده کرد.
اول بسمالله باید مثل همه کتابخونههای دیگه بریم توی تنظیمات گریدل، ماژول اپ و دیپندنسیمون رو اضافه کنیم .
dependencies { //authentication implementation 'com.auth0.android:auth0:2.9.1' } android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } }
بعد وارد وبسایت Auth0 بشید و یک حساب کاربری ایجاد کنید.
بعد از ایجاد حساب کاربری وارد داشبورد بشید و از منوی سمت چپ روی Applications کلیک کنید. تا لیست اپلیکیشنهای شما باز شود.
در همین صفحه روی دکمهی آبی رنگ Create Application کلیک کنید.
در پنجرهای که باز میشه اسم اپلیکیشنتون رو وارد کنید، Native رو انتخاب کنید و سپس روی Create کلیک کنید.
در مرحله بعد وارد تب Quick Start میشید و از اونجایی که ما برنامه نویس اندروید هستیم پس SDK اندروید رو در این قسمت باید انتخاب کنیم ولی خب همونطور که میبینید کلی SDK دیگه مثل فلاتر، IOS، ریاکت نیتیو، زامارین و… هم داره.
توی صفحه بعدی اگه دلتون خواست میتونید وارد گیتهابشون بشید و پروژه نمونهای که برای آموزش و تست ساختن رو دانلود کنید تا با جزئیات بیشتری نحوه کار با احراز هویت در اپلیکیشن اندروید توسط Auth0 رو یاد بگیرید.
پیشنهاد می کنم حتما این کار رو انجام بدید چون پیاده سازیش واقعا ریزه کاریهای زیادی داره.
ما توی این مقاله قصد داشتیم تا شمارو با Auth0 آشنا کنیم و جزئیات پیاده سازیش در حوصله مقاله ما نمیگنجه اما شما توی همین صفحه (Quick Strat) تمام چیزی که برای پیاده سازی auth0 توی پروژتون نیاز دارید مفصل آموزش داده شده و فقط کافیه طبق مراحل گفته شده ادامه بدید.
راستی اگه سوالی واستون در زمان پیاده سازی پیش اومد زیر همین مطلب میتونید سوالتون رو بپرسید تا راهنمایی تون کنم.