اگر شما هم در حال ساخت یک API با کمک لاراول هستید، احتمالاً میان دو پکیج پیشنهادی لاراول که برای authentication مورد استفاده قرار می گیرند دچار سردرگمی برای انتخاب گزینه بهتر شده اید. – لاراول پسپورت و لاراول سنتکام –
این یک راهنمای رسمی از سایت لاراول است که به شما در انتخاب گزینه بهتر کمک کند، اما این راهنما ترجیح داده است که مختصر و فنی توضیح دهد:
" اگر اپلیکیشن شما کاملا نیازمند به Oauth2است باید Laravel passport را انتخاب کنید و اگر چنانکه شما در حال ایجاد یک اپلیکیشن singlePage( SPA ) یا اپلیکیشن موبایلی و یا و... هستید به نظر می رسد کهLaravel Santcum برای شما گزینه بهتری باشد.
APIکه شما می سازید، خواهند توانست اطلاعات را برای کاربران مختلف فراهم کند. به جز زمانی که شما بخواهید دسترسی آزادانه به همه کاربران بدهید باید به نحوی محدودیت دسترسی برای کاربران قائل شوید.
این راهی است که اطمینان یابید که اطلاعات شخصی کاربران شما قابل دسترسی توسط دیگران نیست، یا اینکه حساب و کتاب استفاده کاربرانتان از apiشان را بدانید و ...
البته کاربر هنگام استفاده از اپلیکیشن نباید اطلاعات ورود خود به سیستم را در هر ریکوئست مجدداً وارد کند.
یک اپلیکیشن متوسط ده ها یا بیشتر ریکوئست به سرور ارسال می کند که خود را همگام نگه دارد. البته منظور ما این نیست که اطلاعات ورود کاربر را نگه داریم که ریکوئست ها خودکار شوند.
بنابراین ما راهی را نیاز داریم که کاربر یک بار اعتبار سنجی شود و سپس در ازای هرریکوئست بدون نیاز به اطلاعات ورود تایید اعتبار شود.
این مهم با استفاده از توکن ها به دست می آید – یک رشته توکن که مشخص میکند که کاربر به دیتای ریکوئست ارسال دسترسی خواهد داشت یا نه .
این فرآیند که توکن براساس اطلاعات ورود شما تولید می شود و سپس با استفاده از توکن اعتبار سنجی می شوید، توسط هر دوی passport , santcum قابل پیاده سازی می باشد.
بنابراین هردوی این پکیج ها در تلاش برای یافتن راه حل برای یک مشکل واحد هستند، اما از تکنولوژی های متفاوتی بهره می گیرند؛ که در ابتدای این مقاله نیست به آن تاکید شد.
Oauth2یک فریم ورک اعتبارسنجی است که برای اعتبارسنجی توکن محور در سراسر اینترنت مورد استفاده قرار می گیرد.
در این مقاله خیلی وارد جزییات نخواهیم شد ولی اگر شما می خواهید که یک وب اپلیکیشن توسعه بدهید باید اینها را بدانید و به ابزارهای مورد استفاده خود اضافه کنید.
لاراول پسپورت این استاندارد پیچیده وب را پیاده سازی میکند که برای اعتبار سنجی برنامه ها کاربردی وب، دسکتاپ، تلفن های همراه و بسیاری از دستگاه های دیگر طراحی شده است.
به عبارت ساده تر اگر چیزی در اینترنت بخواهد با چیز دیگری ارتباط برقرار کند این گزینه خوب وجود دارد که می توان از Oauth2برای آن استفاده کرد.
اگر تا به حال با کمک اکانت گوگل خود وارد سایتی شده اید، بدانید که از oauth2 استفاده کرده اید.
Oauth2همچنین با تعریف استانداردها و متدها فرایند احراز هویت ( اعتبار سنجی ) را ساده تر می کند. اما خب لاراول یک عادتی دارد که همه چیز را برای توسعه دهندگان ساده تر کند؛ از این رو شاهد پیدایش پکیج santcum هستیم.
به جای متدها و فرآیندهای پیچیده در oauth2؛ سنتکام فقط با ایجاد توکن برای اپلیکیشن هایی که به اطلاعات بیش از یک کاربر احتیاجی ندارد کمک می کند.
زمانی که این پکیج با spa مانند اپلیکیشن نوشته شده با vuejs استفاده می شود؛ عملکرد بهتری از خود به نمایش می گذارد.
اگر spa و apiدر یک دامنه میزبانی شوند دیگر نیازی به توکن هم نخواهد بود و یک session با استفاده از کوکی ها ایجاد می شود.
این ساده ترین شکل احراز هویت و اعتبار سنجی کاربران است که سنتکام لاراول ارائه می کند.
در مورد کلیات به اندازه کافی صحبت شد، اما کدام پکیج را باید انتخاب کنید؟
· برای مبتدی ها: اگر شک دارید باید passport را انتخاب کنید. در اینجا چیزی وجود ندارد که سنتکام بتواند انجام دهد و پسپورت از پس آن بر نیاید. بنابراین اگر شک دارید passport گزینه مطلوب تری است.
فراتر از آن، تشخیص اینکه آیا گزینههای ارائه شده توسط Sanctum برای نیازهای شما کافی است یا خیر، بنابراین نیازی به هزینه اضافی که پیادهسازی پیچیدهتر پاسپورت به همراه دارد، نیست.
o برنامه تک صفحه ای که در همان دامنه استفاده می شود گزینه ی مطلب سنتکام است.
o برنامه تک صفحه ای شما در دامنه دیگری باشد شما می توانید از توکن سنتکام استفاده کنید.