سلام و تشکر از مطلب منسجم و جامع و مانعی که نوشتید.
در خصوص اینکه فرموده اید " آیا اصلا چنین توکنی در بانک اطلاعاتی ما وجود خارجی دارد یا خیر؟ آیا توسط ما صادر شدهاست یا خیر؟"
فکر میکنم برای نیل به این هدف نیازی برای ذخیره توکنها نیست. همینکه مطمئن شویم امضای توکن صحیح است کفایت میکند تا اطمینان داشته باشیم اولا توکن سالم است و ثانیا صادر کننده هم خود ما بوده ایم. البته این فقط برای روش رمزنگاری نامتقارن مثل RSA صدق میکند. چرا که کاربر با داشتن Public Key نمیتواند توکنی جعل کند. ولی اگر مثلا از HMAC با بکارگیری Shared Secret برای رمزگزاری استفاده شود باید تضمین شود این کلید کاملا محافظت شده و به سمت غیرقابل اطمینان نرود.
ثانیا برای پیاده کردن Login/out میتوان بر روی Claimهای توکن، شماره ای (مثلا Guid) داشته باشیم که سریال توکن را نشان میدهد. این شمارهها را به عنوان شمارههای Active هر کاربر در پایگاه ذخیره کنیم. هنگام رسیدن درخواست پس از اطمینان از صحت توکن و اینکه صادر کننده ما بوده ایم، چون UserId را که در توکن داریم، میتوانیم شماره سریال توکن را در لیست شمارههای اکتیو کاربر در پایگاه جستجو کنیم.
درصورت Logout هم این لیستِ شماره هایِ کاربر را خالی کنیم.