تعریف نقشها، سادهترین روش محدود کردن دسترسی به منابع است؛ برای نمونه مشخص میکنیم که کاربران دارای نقش 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 می ...
معرفی IdentityServer 4
اگر استاندارد OpenID Connect را بررسی کنیم، از مجموعهای از دستورات و رهنمودها تشکیل شدهاست. بنابراین نیاز به کامپوننتی داریم که این استاندارد را پیاده سازی کرده باشد تا بتوان بر اساس آن یک Identity Provider را تشکیل داد و پیاده سازی مباحثی که در قسمت قبل بررسی شدند مانند توکنها، Flow، انواع کلاینتها، انواع Endpoints و غیره چیزی نیستند که به سادگی قابل انجام باشند. اینجا است که IdentitySer ...
پیش از نصب و راه اندازی IdentityServer، نیاز است با یک سری از مفاهیم اساسی پروتکل OpenID Connect، مانند Identity token ،Client types ،Flow و Endpoints، آشنا شویم تا بتوانیم از امکانات این IDP ویژه استفاده و آنها را تنظیم کنیم. بدون آشنایی با این مفاهیم، اتصال برنامهای که در قسمت قبل تدارک دیدیم به IdentityServer میسر نیست.
پروتکل OpenID Connect چگونه کار میکند؟
در انتهای قسمت اول این سری، پروتکل OpenID Con ...
در این قسمت قصد داریم ساختار مقدماتی مثال این سری را که لیستی از تصاویر آپلود شدهی توسط کاربران مختلف را نمایش میدهد، بدون افزودن مباحث امنیتی و سطوح دسترسی کاربران وارد شدهی به سیستم، تشکیل دهیم. در قسمتهای بعدی، به تدریج آنرا با قابلیتهای مختلف IdentityServer 4x یکپارچه خواهیم کرد. در اینجا فرض بر این است که حداقل SDK نگارش 2.1.401 را پیشتر نصب کردهاید.
بررسی ساختار WebAPI مقدماتی مثال این سری
ا ...
عصر Thick Clients
امن سازی برنامههای وب همواره چالش برانگیز بودهاست؛ خصوصا این روزها که نیاز است برنامهها، خارج از دیوارهای یک شرکت نیز در دسترس باشند و توسط انواع و اقسام وسایل ارتباطی مورد استفاده قرار گیرند. در سالهای قبل، عموما برنامههای thick clients مانند WPF و WinForms برای شرکتها توسعه داده میشدند و یا برنامههای وب مانند ASP.NET Web Forms که مبتنی بر سرویسها نبودند. در برنامههای ویندوزی، پس از لاگین شخص به ش ...
اگر پروژهی شما به همراه توزیع بستههای نیوگت است، پس از مدتی، از build و آپلود دستی بستههای نیوگت آنها خسته خواهید شد. همچنین این سؤال هم برای مصرف کنندگان بستهی نیوگت شما همواره وجود خواهد داشت: «آیا بستهی نهایی را که آپلود کرده، دقیقا بر اساس سورس کد موجود در مخزن کد عمومی آن تهیه شدهاست؟»
برای رفع این مشکلات، از روشهای توسعهی به همراه ابزارهای یکپارچگی مداوم استفاده میشود. برای نمونه، AppVeyor یکی از سرویسهای ابری ...
واکنش نشان دادن به تغییرات صفحات وب، قسمت مهم و عمدهای از کار توسعهی برنامههای وب را تشکیل میدهد. مفاهیم مرتبط با DOM events از زمان IE 4.0 و Netscape Navigator version 2 به مرورگرها اضافه شدند و به مرور تکامل یافتند. پیش از ظهور مرورگرهای مدرن (به IE 9.0 و مرورگرهای پیش از آن، مرورگرهای «باستانی» گفته میشود) به علت عدم هماهنگی آنها با استانداردهای وب و تفاوت روشهای رخدادگردانی، jQuery نقش مهمی را در زمینهی یکدست سازی کدهای مدیریت ...