راکت

لاگین از طریق چند دامنه با یک لاگین مرکزی

7 پاسخ

سلام
ما یه سامانه داریم که میخوام اینو روی چندتا دامنه بالا بیارم api های همه یکین ولی دامنه ها متفاوتن و سرویسای متفاوتی میدن
حالا من میخوام اگه کاربر روی یه دامنه لاگین کرد روی اون یکی دامنه هم با همون توکن اولی لاگین بشه ولی نمیدونم چه راهی بهتره
مثلا ساده ترین راه اینه که کوکی توکن رو کراس دامین کنم که این نمیدونم چقدر باگ امنیتی ممکنه ایجاد کنه
یا مثلا بیام oauth استفاده کنم و...
@ali.bayat
@Alimotreb

مهدی
مهدی
@code2code
ثبت پرسش جدید

پاسخ‌ها

7
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

درود

شما یه Api دارید دیگه.. هنگامی که کاربر روی یه دامنه با موفقیت لاگین میکنه، یه درخواست به Api بفرستید و کاربر رو هر چقدر زمان که لازمه لاگین کنید.. در سایر دامنه‌ها هم اگر کاربر لاگین نکرده بود... ابتدا Api رو چک کنید اگر مشخصات کاربر موجود بود .. کاربر رو در دامنه دیگر هم لاگین کنید

پیروز باشید

مهدی
مهدی
@code2code

@ali.bayat
مشکل اینجاست که مرورگرهای مدرن نمیذارن کوکی ها بین دامنه های مختلفshare بشن واسه مسائل امنیتی و عدم دزدی اطلاعات
حالا من اگه به مرورگر بگم بیخیال شو همه بتونن هم رو بخونن ممکنه جایی مشکل امنیتی پیش بیاد واسه همینه که شک دارم این کارو بکنم

شاید پاسخ شما همین‌جا باشد

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

یه کارِ دیگه هم میتونید انجام بدید. یه مکانیزم لاگین ساده بین اپلیکیشن هاتون بنویسید; چیزی شبیه زیر:

فرض کنید هر دامنه شما یه اپلیکیشن لاراولی هست و برای API هم از لاراول و یا شاید لومن استفاه میکنید...

  • برای اپلیکیشن های هر دامنه Middleware ی بسازید که برای احراز هویت مستقیما با API در ارتباطه و اگر برای کاربر توکنی ثبت شده باشه، ورود کاربر مجاز میشه. اگر هم ثبت نشده باشه به قسمت لاگین ریدایرکت میشه.

  • همچنین برای اپلیکیشن های هر دامنه فرمی برای لاگین بسازید که دقیقا مثل میدل‌ور بالا، کاربر رو از طریق API اعتبار سنجی کنه و در صورتی همه چیز اوکی بود. ---> کابر به سیستم اون دامنه لاگین میشه.

  • با ورود به هر دامنه جدید می‌توان از طریق بدنه درخواست توکن احراز هویت را نیز ارسال کرد... دامنه مربوطه از طریق API چک میکنه; اگر توکن صحیح بود کاربر رو بدون نیاز به فرم لاگین، به سیستم لاگین میکنه.

البته این یه راه از چندین راهه اما به نظرم تکیه کردن به کوکی ها برای این کار، انتخاب خیلی خوبی نیست..

مهدی
مهدی
@code2code

من نمیخوام هر دامنه یه لاگین داشته باشه میخوام مث گوگل و یوتیوب باشه که با لاگین هم کار کنن این لاگین شد اونم بشه
یه چیزی پیدا کردم فک کنم اوکیه معروفه به sso

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

SSO یا Single sign-on هم تقریبا شبیه روشی میشه که در بالا گفتم با کمی تفاوت
پکیج هایی برای این کار در لاراول و PHP هم هست:
https://packagist.org/packages/zefy/laravel-sso

Client visits Broker and unique token is generated. When new token is generated we need to attach Client session to his session in Broker so he will be redirected to Server and back to Broker at this moment new session in Server will be created and associated with Client session in Broker's page. When Client visits other Broker same steps will be done except that when Client will be redirected to Server he already use his old session and same session id which associated with Broker#1.

سری به Packagist بزنید باید پکیج های خوب دیگری هم پیدا کنید

Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

سلام
@code2code

به نظر من کار جالبی نیست اینکار!
ولی اگر خواستید انجام بدید هم یه جدول جدا در نظر بگیرید که اطلاعات یه کاربری که لاگین میکنه رو ثبت کنه! هر چیزیش رو
سشن ، آیپی ، دامنه و ...
بعد اگر با دامنه دیگه ای خواست درخواست بده از این جدول چک کنه و اوکی کنه!
ولی بزرگترین وب سرویس ها هم با 1 دامنه کار میکنند!

مهدی
مهدی
@code2code

@Alimotreb
سلام والا خوب آخه ما یه سامانه داریم که در واقع پروژه ایه واسه شرکتای بزرگ
ولی یه سامانه دیگه داریم که حالت عمومیه ولی این دو محصول از یه جا api میگیرن در واقع هر دو بک اند یکسانی دارن ولی فقط فرانت و دامنه متفاوت میشه

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام