‫امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x – قسمت دوم – ایجاد ساختار اولیه‌ی مثال این سری


‫امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x – قسمت دوم – ایجاد ساختار اولیه‌ی مثال این سری

ایجاد ساختار اولیه‌ی مثال این سری :در این قسمت قصد داریم ساختار مقدماتی مثال این سری را که لیستی از تصاویر آپلود شده‌ی توسط کاربران مختلف را نمایش می‌دهد، بدون افزودن مباحث امنیتی و سطوح دسترسی کاربران وارد شده‌ی به سیستم، تشکیل دهیم. در قسمت‌های بعدی، به تدریج آن‌را با قابلیت‌های مختلف IdentityServer 4x یکپارچه خواهیم...

ایجاد ساختار اولیه‌ی مثال این سری :در این قسمت قصد داریم ساختار مقدماتی مثال این سری را که لیستی از تصاویر آپلود شده‌ی توسط کاربران مختلف را نمایش می‌دهد، بدون افزودن مباحث امنیتی و سطوح دسترسی کاربران وارد شده‌ی به سیستم، تشکیل دهیم. در قسمت‌های بعدی، به تدریج آن‌را با قابلیت‌های مختلف IdentityServer 4x یکپارچه خواهیم کرد. در اینجا فرض بر این است که حداقل SDK نگارش ۲٫۱٫۴۰۱ را پیشتر نصب کرده‌اید. با ما همراه شوید.

بررسی ساختار WebAPI مقدماتی مثال این سری

‫امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x – قسمت دوم – ایجاد ساختار اولیه‌ی مثال این سری

این پروژه‌ی مقدماتی که هنوز قسمت‌های اعتبارسنجی به آن اضافه نشده‌اند، از دو قسمت WebApi و MvcClient تشکیل می‌شود.

کار قسمت WebApi، ارائه‌ی یک Restful-API برای کار با گالری تصاویر است. برای اجرای آن وارد پوشه‌ی srcWebApiImageGallery.WebApi.WebApp شده و ابتدا فایل restore.bat و سپس dotnet_run.bat را اجرا کنید.

در این حالت برنامه بر روی پورت ۷۰۰۱ در دسترس خواهد بود:

‫امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x – قسمت دوم – ایجاد ساختار اولیه‌ی مثال این سری

این پورت نیز در فایل PropertieslaunchSettings.json تنظیم شده‌است تا با پورت کلاینت MVC تهیه شده، تداخل نکند.

کار این سرویس، ارائه‌ی ImagesController است که توسط آن می‌توان لیستی از تصاویر موجود، اطلاعات یک تصویر و همچنین کار ثبت، ویرایش و حذف تصاویر را انجام داد.

در این Solution، رکوردهای تصاویری که در بانک اطلاعاتی ذخیره می‌شوند، یک چنین ساختاری را دارند:

using System; using System.ComponentModel.DataAnnotations; namespace ImageGallery.WebApi.DomainClasses { public class Image { [Key] public Guid Id [Required] [MaxLength(150)] public string Title [Required] [MaxLength(200)] public string FileName [Required] [MaxLength(50)] public string OwnerId } }

همانطور که ملاحظه می‌کنید در اینجا OwnerId نیز در نظر گرفته شده‌است تا بتوان پس از اعمال مباحث اعتبارسنجی، تصاویر را از کاربری خاص دریافت و همچنین صرفا تصاویر متعلق به او را به آن کاربر خاص نمایش داد.

در این قسمت توسط کلاس ImageConfiguration کار مقدار دهی اولیه‌ی بانک اطلاعاتی به کمک متد HasData مربوط به EF Core 2.1 صورت گرفته‌است و به این ترتیب می‌توان برنامه را برای نمایش مقدماتی جاری، بدون داشتن سیستم اعتبارسنجی و مفاهیم کاربران، نمایش داد.

این قسمت از Solution، به نحو زیر تشکیل شده‌است:

– ImageGallery.WebApi.DataLayer

در اینجا کار تشکیل DbContext برنامه و همچنین مقدار دهی اولیه‌ی بانک اطلاعاتی و تنظیمات Migrations قرار گرفته‌اند.

– ImageGallery.WebApi.DomainClasses

در این پروژه کلاس‌های موجودیت‌های متناظر با جداول بانک اطلاعاتی قرار می‌گیرند.

– ImageGallery.WebApi.Mappings

این پروژه کار تهیه نگاشت‌های AutoMapper برنامه را انجام می‌دهد؛ نگاشت‌هایی بین Models و DomainClasses که در ImagesController از آن‌ها استفاده می‌شود.

– ImageGallery.WebApi.Models

در این پروژه همان DTO’s پروژه قرار گرفته‌اند. جهت رعایت مسایل امنیتی نباید کلاس موجودیت Image فوق را مستقیما در معرض دید API عمومی قرار داد. به همین جهت تعدادی Model در اینجا تعریف شده‌اند که هم برای ثبت، ویرایش و حذف اطلاعات بکار می‌روند و هم جهت گزارشگیری از رکوردهای موجود جدول تصاویر.

– ImageGallery.WebApi.Services

در این پروژه کار با DbContext انجام شده و توسط آن اطلاعات تصاویر به بانک اطلاعاتی اضافه شده و یا واکشی می‌شوند.

– ImageGallery.WebApi.WebApp

این پروژه، همان پروژه‌ی اصلی است که سایر قسمت‌های یاد شده را در کنار هم قرار داده و به صورت یک Restful-API ارائه می‌دهد.

بررسی ساختار MvcClient مقدماتی مثال این سری

پس از اجرای WebAPI و آماده بودن آن جهت استفاده، اکنون یک کلاینت ASP.NET Core MVC را جهت کار با امکانات ImagesController آن، تدارک دیده‌ایم.

برای اجرای آن وارد پوشه‌ی srcMvcClientImageGallery.MvcClient.WebApp شده و ابتدا فایل restore.bat و سپس dotnet_run.bat را اجرا کنید.

در این حالت برنامه بر روی پورت ۵۰۰۱ در دسترس خواهد بود:

‫امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x – قسمت دوم – ایجاد ساختار اولیه‌ی مثال این سری

این پورت نیز در فایل PropertieslaunchSettings.json تنظیم شده‌است.

‫امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x – قسمت دوم – ایجاد ساختار اولیه‌ی مثال این سری

در اینجا نمایی از اجرای این برنامه را مشاهده می‌کنید که لیستی از تصاویر را توسط GalleryController، از سرویس ImagesController مربوط به WebAPI، دریافت کرده و سپس نمایش می‌دهد. در این لیست تصاویر تمام کاربران با هم نمایش داده شده‌اند و هنوز امکان فیلتر کردن آن‌ها بر اساس کاربران وارد شده‌ی به سیستم را نداریم که در قسمت‌های بعدی آن‌ها را تکمیل خواهیم کرد.

این قسمت از Solution به نحو زیر تشکیل شده‌است:

– ImageGallery.MvcClient.Services

در اینجا یک Typed HTTP Client مخصوص NET Core 2.1. را تهیه کرده‌ایم. این سرویس جهت دسترسی به آدرس https://localhost:7001 که WebAPI برنامه در آن قرار دارد، تشکیل شده‌است. روش ثبت مخصوص آن‌را نیز در فایل آغازین پروژه‌ی MvcClient.WebApp توسط متد services.AddHttpClient ملاحظه می‌کنید.

– ImageGallery.MvcClient.ViewModels

مدل‌های متناظر با ساختار Viewهای Razor برنامه‌ی وب، در اینجا قرار می‌گیرند.

– ImageGallery.MvcClient.WebApp

این پروژه، همان پروژه‌ی اصلی است که سایر قسمت‌های یاد شده را در کنار هم قرار داده و به صورت یک برنامه‌ی MVC قابل مرور در مرورگر، ارائه می‌دهد.

کدهای کامل این قسمت را از اینجا می‌توانید دریافت کنید.

برای اجرای آن ابتدا باید پروژه‌ی WebApi.WebApp را اجرا کنید و سپس پروژه‌ی MvcClient.WebApp.

dotnettips

‫امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x – قسمت دوم – ایجاد ساختار اولیه‌ی مثال این سری

منتخب امروز


فرمول مساحت و محیط انواع اشکال ریاضی و هندسی