کاربران و نشستها
کاربر Abrova Auth چیست، نشست چطور کار میکند (access token یکساعته، refresh token چرخشی با تشخیص استفادهی دوباره)، SDK چطور آن را تمدید میکند، و خروج، خروج از همهجا و غیرفعال کردن کاربر چطور آن را پایان میدهند.
هر کاربر Abrova Auth متعلق به یک پروژه است و یک شناسهی تصادفی دارد. نشست چیزی است که آن کاربر را روی یک دستگاه وارد نگه میدارد: یک access token کوتاهمدت برای محصولات ابرووا و یک refresh token بلندمدت که SDK آن را با access tokenهای جدید عوض میکند.
کاربران#
هر کاربر شناسهای مثل ru_4fK9xQ2mB7nT1pLz8RcV3w دارد: ru_ و ۲۲ حرف و رقم تصادفی. شناسه هرگز ایمیل، شماره تلفن یا شناسهی حساب Apple یا Google را در خود ندارد، پس ذخیرهاش در دادههایتان و نمایشش در logها امن است.
- هر پروژه، یک فهرست کاربر. یک شخص در دو پروژهی شما، دو کاربر بیارتباط است. کاربرِ یک پروژه هرگز نمیتواند به پروژهی دیگر وارد شود.
- چند راه ورود، یک کاربر. کاربر میتواند بیش از یک روش ورود وصلشده داشته باشد (مثلاً اول ناشناس، بعد Apple، بعد رمز عبور). شناسه همان میماند. کاربران ناشناس و ارتقا را ببینید.
- بدون ادغام خودکار بر اساس ایمیل. یک حساب Apple و یک حساب Google با ایمیل یکسان دو کاربرند، مگر اینکه کاربر عمداً آنها را به هم وصل کند. ادغام بر اساس ایمیل یک روش شناختهشده برای تصاحب حسابهاست.
SDKها کاربر را به این شکل برمیگردانند:
| فیلد | معنا |
|---|---|
| id | شناسهی کاربر (ru_...). همهجای اپ از آن بهعنوان شناسهی کاربر استفاده کنید. |
| anonymous | تا وقتی کاربر Apple، Google یا رمز عبور را وصل نکرده، true است. |
| emailVerified | وقتی کاربر مالکیت آدرس ایمیل را ثابت کرده باشد true است (لینک تأیید، لینک یکبارمصرف، بازیابی رمز عبور، یا ایمیل تأییدشدهی Google). |
| createdAt | زمان ساخت کاربر. |
| providers | روشهای ورود وصلشده، مثلاً apple، google، password. |
نشستها#
هر ورود یک نشست روی آن دستگاه شروع میکند. هر نشست دو توکن دارد:
| access token | refresh token | |
|---|---|---|
| چیست | توکن کاربر ابرووا (یک JWT امضاشده) | یک مقدار تصادفی که بهتنهایی معنایی ندارد |
| طول عمر | یک ساعت | ۶۰ روز از آخرین استفاده، حداکثر یک سال از زمان ورود |
| نگهداری روی دستگاه | در حافظه | در حافظهی امن (Keychain، حافظهی متکی به Android Keystore، یا هر چه روی وب انتخاب کنید) |
| نگهداری در ابرووا | هیچ: با امضایش بررسی میشود | فقط هش آن |
| فرستاده میشود به | همهی محصولات ابرووا | فقط Abrova Auth |
کاربری که دستکم هر ۶۰ روز یک بار اپ را باز کند، تا یک سال وارد میماند. بعد از یک سال، یا بعد از ۶۰ روز بدون باز کردن اپ، کاربر دوباره وارد میشود.
access token
access token همان توکن کاربر ابرووا استاندارد است. Abrova Sync، Chat، Push، A/B Testing و Storage امضای آن را بررسی میکنند و کاربر را از آن میخوانند، پس هرگز لازم نیست خودتان شناسهی کاربر را به آنها بدهید. این توکن شامل اینهاست:
| Claim | مقدار |
|---|---|
| sub | شناسهی کاربر (ru_...). این همان auth.uid در قوانین امنیتی Sync است. |
| pid | پروژهی شما. توکنِ پروژهی دیگر همهجا رد میشود. |
| exp | یک ساعت بعد از صدور. |
| amr | کاربر چطور وارد شده: anonymous، apple، google، password، magic_link یا telegram. |
تمدید
تمدید توکنها کار شما نیست. SDK access token را نگه میدارد و وقتی یک SDK ابرووا (یا کد شما) آن را بخواهد، اگر بیش از ۲ دقیقه از اعتبارش مانده باشد همان را برمیگرداند و در غیر این صورت تمدیدش میکند. چند درخواستکننده که همزمان آن را بخواهند، در یک تمدید شریک میشوند.
هر تمدید یک refresh token جدید برمیگرداند و قبلی را بازنشسته میکند. اگر یک refresh token بازنشسته دوباره استفاده شود، یعنی کسی آن را کپی کرده است: Abrova Auth فوراً کل آن نشست را پایان میدهد و آن را در گزارش فعالیت ثبت میکند. کاربر واقعی فقط دوباره وارد میشود؛ نسخهی کپیشده از کار میافتد. تمدیدهای همزمان از یک اپ بهطور امن مدیریت میشوند.
آفلاین و خطاهای شبکه
خطای شبکه هرگز کاربر را خارج نمیکند. SDK نشست را نگه میدارد و در درخواست بعدی دوباره تلاش میکند. کاربر فقط وقتی خارج میشود که Abrova Auth بگوید نشست تمام شده است.
پایان دادن به نشست#
| چه اتفاقی میافتد | نتیجه |
|---|---|
| signOut() | نشست را روی این دستگاه پایان میدهد. هرگز شکست نمیخورد: دستگاه نشست را فراموش میکند، حتی وقتی آفلاین است. |
| signOutEverywhere() | همهی نشستهای کاربر را روی همهی دستگاهها پایان میدهد. |
| deleteAccount() | کاربر و همهی نشستهایش را حذف میکند. امنیت و دادهها را ببینید. |
| بازیابی رمز عبور | همهی نشستهای کاربر را پایان میدهد. کاربر با رمز عبور جدید وارد میشود. |
| غیرفعال کردن کاربر در کنسول | همهی نشستها را پایان میدهد. ورود و تمدید تا وقتی کاربر را دوباره فعال نکنید USER_DISABLED برمیگردانند. |
| استفاده از refresh token کپیشده | آن نشست را پایان میدهد (تشخیص استفادهی دوباره). |
| ۶۰ روز بدون استفاده، یا یک سال عمر | نشست منقضی میشود. تمدید بعدی SESSION_EXPIRED برمیگرداند. |
وقتی نشستی روی سرور پایان مییابد، SDK روی آن دستگاه در تمدید بعدی متوجه میشود، نشست را پاک میکند و به listener وضعیت ورود شما خبر میدهد (کاربر null میشود).
access tokenها با امضایشان بررسی میشوند، نه با جستجو. access tokenی که پیش از خروج از همهجا، غیرفعالسازی یا حذف صادر شده، در محصولات دیگر ابرووا تا زمان انقضا، حداکثر یک ساعت بعد، کار میکند. تمدید آن فوراً رد میشود، پس قابل تمدید نیست.
در کنسول#
Abrova Auth › کاربران فهرست کاربران پروژه را همراه روشهای ورود، زمان ساخت و آخرین فعالیتشان نشان میدهد. از همانجا میتوانید کاربری را غیرفعال یا فعال کنید، او را از همهجا خارج کنید، یا حذفش کنید.