در « قسمت دهم- ذخیره سازی اطلاعات کاربران IDP در بانک اطلاعاتی »، اطلاعات TestUser تنظیم شدهی در کلاس Config برنامهی IDP را به بانک اطلاعاتی منتقل کردیم که در نتیجهی آن سه جدول Users، UserClaims و UserLogins، تشکیل شدند. در اینجا میخواهیم سایر قسمتهای کلاس Config را نیز به بانک اطلاعاتی منتقل کنیم.
تنظیم مجوز امضای توکنهای IDP namespace DNT.IDP
{
public class Startup
{
public void Config ...
در انتهای « قسمت دوازدهم- یکپارچه سازی با اکانت گوگل »، کار «اتصال کاربر وارد شدهی از طریق یک IDP خارجی به اکانتی که هم اکنون در سطح IDP ما موجود است» انجام شد. اما این مورد یک مشکل امنیتی را هم ممکن است ایجاد کند. اگر IDP ثالث، ایمیل اشخاص را تعیین اعتبار نکند، هر شخصی میتواند ایمیل دیگری را بجای ایمیل اصلی خودش در آنجا ثبت کند. به این ترتیب یک مهاجم میتواند به سادگی تنها با تنظیم ایمیل کاربری مشخص و مورد استفادهی در برنامهی ما در آن ...
در مطلب قبلی « استفاده از تامین کنندههای هویت خارجی »، نحوهی استفاده از اکانتهای ویندوزی کاربران یک شبکه، به عنوان یک تامین کنندهی هویت خارجی بررسی شد. در ادامه میخواهیم از اطلاعات اکانت گوگل و IDP مبتنی بر OAuth 2.0 آن به عنوان یک تامین کنندهی هویت خارجی دیگر استفاده کنیم.
ثبت یک برنامهی جدید در گوگل
اگر بخواهیم از گوگل به عنوان یک IDP ثالث در IdentityServer استفاده کنیم، نیاز است در ابتدا برنامهی IDP خود ...
همیشه نمیتوان کاربران را وادار به استفادهی از صفحهی لاگین برنامهی IDP کرد. ممکن است کاربران بخواهند توسط سطوح دسترسی خود در یک شبکهی ویندوزی به سیستم وارد شوند و یا از Social identity providers مانند تلگرام، گوگل، فیسبوک، توئیتر و امثال آنها برای ورود به سیستم استفاده کنند. برای مثال شاید کاربری بخواهد توسط اکانت گوگل خود به سیستم وارد شود. همچنین مباحث two-factor authentication را نیز باید مدنظر داشت؛ برای مثال ارسال یک کد موقت از ...
تا اینجا تمام قسمتهای این سری ، برای اساس اطلاعات یک کلاس Config استاتیک تشکیل شدهی در حافظه ارائه شدند. این روش برای دمو و توضیح مفاهیم پایهی IdentityServer بسیار مفید است؛ اما برای دنیای واقعی خیر. بنابراین در ادامه میخواهیم این قسمت را با اطلاعات ذخیره شدهی در بانک اطلاعاتی تعویض کنیم. یک روش مدیریت آن، نصب ASP.NET Core Identity دقیقا داخل همان پروژهی IDP است. در این حالت کدهای ASP.NET Core Identity مایکروسافت، کار مدیریت کار ...
توکنهای صادر شدهی توسط IdentityServer به دلایل امنیتی، طول عمر محدودی دارند. بنابراین اولین سؤالی که در اینجا مطرح خواهد شد، این است: «اگر توکنی منقضی شد، چه باید کرد؟» و یا «اگر خواستیم به صورت دستی طول عمر توکنی را پایان دهیم، چه باید کرد؟»
بررسی طول عمر توکنها
اگر مرورگر خود را پس از لاگین به سیستم، برای مدتی به حال خود رها کنید، پس از شروع به کار مجدد، مشاهده خواهید کرد که دیگر نمیتوانید به API دسترسی پیدا ...
تعریف نقشها، سادهترین روش محدود کردن دسترسی به منابع است؛ برای نمونه مشخص میکنیم که کاربران دارای نقش PayingUser، امکان سفارش دادن نگارش قاب شدهی تصاویر را داشته باشند. اما میخواهیم منطق دسترسی به منابع مختلف را پیچیدهتر کنیم. برای مثال میخواهیم بررسی کنیم اگر منبعی واقعا متعلق به کاربر جاری سیستم است، به آن دسترسی داشته باشد. برای مثال هرچند کاربر جاری دارای نقش PayingUser است، اما آیا باید اجازهی ویرایش تصاویر تمام کاربران، برای ...
تا اینجا بجای قرار دادن مستقیم قسمت مدیریت هویت کاربران، داخل یک یا چند برنامهی مختلف، این دغدغهی مشترک (common concern) بین برنامهها را به یک برنامهی کاملا مجزای دیگری به نام Identity provider و یا به اختصار IDP منتقل و همچنین دسترسی به کلاینت MVC برنامهی گالری تصاویر را نیز توسط آن امن سازی کردیم. اما هنوز یک قسمت باقی ماندهاست: برنامهی کلاینت MVC، منابع خودش را از یک برنامهی Web API دیگر دریافت میکند و هرچند دسترسی به برنامهی ...
از Claims جهت ارائهی اطلاعات مرتبط با هویت هر کاربر و همچنین Authorization استفاده میشود. برای مثال درنگارشهای قبلی ASP.NET، مفاهیمی مانند «نقشها» وجود دارند. در نگارشهای جدیدتر آن، «نقشها» تنها یکی از انواع «User Claims» هستند. در قسمتهای قبل روش تعریف این Claims را در IDP و همچنین تنظیمات مورد نیاز جهت دریافت آنها را در سمت برنامهی Mvc Client بررسی کردیم. در اینجا مطالب تکمیلی کار با User Claims را مرور خواهیم کرد.
...
پس از راه اندازی IdentityServer ، نوبت به امن سازی برنامهی Mvc Client توسط آن میرسد و اولین قسمت آن، ورود به سیستم و خروج از آن میباشد.
بررسی اجزای Hybrid Flow
در قسمت سوم در حین «انتخاب OpenID Connect Flow مناسب برای یک برنامهی کلاینت از نوع ASP.NET Core» به این نتیجه رسیدیم که Flow مناسب یک برنامهی Mvc Client از نوع Hybrid است. در اینجا هر Flow، شروع به ارسال درخواستی به سمت Authorization Endpoint می ...