مهدی
5 سال پیش توسط مهدی مطرح شد
7 پاسخ

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

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


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

درود

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

پیروز باشید


مهدی
@code2code 5 سال پیش آپدیت شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

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

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

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

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

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

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


مهدی
@code2code 5 سال پیش مطرح شد
0

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


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

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 5 سال پیش مطرح شد
0

سلام
@code2code

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


مهدی
@code2code 5 سال پیش مطرح شد
0

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


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

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