نظرات مطالب
اعتبارسنجی مبتنی بر JWT در ASP.NET Core 2.0 بدون استفاده از سیستم Identity
- مثال سمت کلاینت آن‌را بررسی کنید. ارسال اکسس‌توکن، جهت اعتبارسنجی در سمت سرور الزامی است و اختیاری نیست. توسط آن است که هویت کاربر مشخص می‌شود و گرنه درخواست رسیده عادی و اعتبارسنجی نشده‌است؛ همانند الزام به ارسال کوکی‌های سمت کلاینت ASP.NET Core Identity که اساس کار آن‌را تشکیل می‌دهد. بدون این کوکی، کاربر به هیچ قسمتی دسترسی نخواهد داشت. فقط چون در آنجا مرورگر کوکی‌ها را به صورت خودکار ارسال می‌کند، شاید متوجه حضور آن‌ها نشده‌اید و گرنه اساس کار یکی است. مفهوم refresh token در اینجا شبیه به پیاده سازی sliding expiration برای کوکی‌ها است. اطلاعات بیشتر: «معرفی JSON Web Token»
- مثال سمت کلاینت بحث جاری در سری «احراز هویت و اعتبارسنجی کاربران در برنامه‌های Angular» عمیق‌تر بررسی شده‌است.
نظرات مطالب
امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x - قسمت دهم- ذخیره سازی اطلاعات کاربران IDP در بانک اطلاعاتی
- خیر.
- میزان تغییرات آن‌ها بسته به اینکه پروژه‌ی API یا MVC باشند، در قسمت‌های 5 تا هفتم این سری به تفصیل و جداگانه بحث شده‌اند و به همراه یک پروژه‌ی انجام شده که از قسمت دوم شروع می‌شود و تا قسمت آخر تکمیل شده، هست. این سری فقط دو کلاینت API و MVC را بررسی کرده. سایر کلاینت‌ها را باید به مثال‌های خودشان مراجعه کنید.
- بله و خیر. قرار نیست کلاینت‌ها دیگر اطلاعات کاربران را ثبت کنند و قرار نیست دیگر در بانک اطلاعاتی خودشان به دنبال آن‌ها بگردند. سطوح دسترسی و claims در اینجا (قسمت‌های 6 و 8 این سری)، کار مدیریت سطوح دسترسی و دریافت آن‌ها را از IDP انجام می‌دهند. یعنی IDP فقط کار لاگین را برای آن‌ها انجام نمی‌دهد (authentication)، بلکه قسمتی از پروسه‌ی Authorization (تامین اطلاعات مورد نیاز جهت برقرار سطوح دسترسی، یا همان قسمت 6) را به نام Claims هم انجام می‌دهد. برنامه‌ی کلاینت با این claims تمام دسترسی‌ها لازم را برای تامین سیاست‌های داخلی خودش، برقرار می‌کند (قسمت 8). تمام این موارد در پروژه‌ی این سری بررسی شده‌اند و حتما نیاز هست یکبار قدم به قدم بررسی شود.
- در قسمت سوم این مورد به تفصیل بررسی شده.
اشتراک‌ها
تغییرات ASP.NET Core در NET 8 Preview 5.

Here’s a summary of what’s new in this preview release:

  • Improved ASP.NET Core debugging experience
  • Servers & middleware
    • IHttpSysRequestTimingFeature
    • SNI hostname in ITlsHandshakeFeature
    • IExceptionHandler
  • Blazor
    • New Blazor Web App project template
    • Blazor router integration with endpoint routing
    • Enable interactivity for individual components with Blazor Server
    • Improved packaging of Webcil files
    • Blazor Content Security Policy (CSP) compatibility
  • API authoring
    • Support for generic attributes
  • SignalR
    • SignalR seamless reconnect
  • Native AOT
    • Support for AsParameters and automatic metadata generation in compile-timed generated minimal APIs
  • Authentication and authorization
    • Authentication updates in ASP.NET Core SPA templates
    • New analyzer for recommended AuthorizationBuilder usage
     
تغییرات ASP.NET Core در NET 8 Preview 5.
اشتراک‌ها
سری ASP.NET Core Identity

ASP.NET Core Identity is Microsoft’s membership system widely known to .NET developers for managing application users. 

سری ASP.NET Core Identity
اشتراک‌ها
آموزش توسعه یک بلاگ با Blazor Server

Build a Complete Blog App with Blazor Server - Step-by-Step Tutorial from Scratch by Abhay Prince

You will learn about fundamentals of Blazor Server, Routing, Shared Reusable Components, Custom Authentication, EF Core Code First, Passing data from parent to child components and vice versa, Passing events from child to parent components, Forms validations and submissions, styling components, using javascript with blazor. third party components integration with blazor, blazor lifecycle events, authentication and authorization in blazor server, programtically navigating between component pages, multiple routes paths for single component page, dynamic routes and getting data from routes, authorized view and much more... 

آموزش توسعه یک بلاگ با Blazor Server
نظرات مطالب
پیاده سازی JSON Web Token با ASP.NET Web API 2.x
- تنظیمات IoC Container آن (برنامه‌ای که آزمایش شده و کار می‌کند) در اینجا هست. کدهای خودتان را با آن مقایسه کنید.
- آدرسی که کار می‌کند، یعنی جزو مسیریابی سیستم ثبت شده‌است.
- برای فعال سازی CORS این مراحل باید طی شوند:
در فایل WebApiConfig.cs، در ابتدای متد Register این کدها باید اضافه شوند:
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
config.MessageHandlers.Add(new PreflightRequestsHandler());
در گردش کاری CORS، کلاینت قبل از ارسال درخواست‌های delete، put و post، ابتدا درخواستی از نوع option را ارسال می‌کند تا وضعیت دسترسی را بررسی کند:
public class PreflightRequestsHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        if (request.Headers.Contains("Origin") && request.Method.Method == "OPTIONS")
        {
            var response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK};
            response.Headers.Add("Access-Control-Allow-Origin", "*");
            response.Headers.Add("Access-Control-Allow-Headers", "Origin, Content-Type, Accept, Authorization");
            response.Headers.Add("Access-Control-Allow-Methods", "*");
            var tsc = new TaskCompletionSource<HttpResponseMessage>();
            tsc.SetResult(response);
            return tsc.Task;
        }
        return base.SendAsync(request, cancellationToken);
    }
}
به علاوه در ابتدای کدهای سمت کلاینت هم این سطر باید اضافه شود:
jQuery.support.cors = true;
نظرات مطالب
آزمایش Web APIs توسط Postman - قسمت ششم - اعتبارسنجی مبتنی بر JWT
تنظیمات آغازین برنامه:
public void ConfigureServices(IServiceCollection services)
        {
            // بقیه کدها جهت سهولت در خوانایی حذف شده اسند
             services.AddAntiforgery(opt =>
            {
                opt.Cookie.Name = ".Middleware.Antiforgery";
                opt.HeaderName = "X-XSRF-TOKEN";
                opt.SuppressXFrameOptionsHeader = false;
            });
        }
فراخوانی کنترلرهایی که دارای POST VERB هستند با استفاده از POSTMAN بدرستی در حال انجام هستند ولی فراخوانی همان کنترلها توسط ajax یا سایر کتابخانه‌ها مانند Restsharp با تکه کد زیر با خطای badrequest همراه میشود.
var loginUrl = new RestClient("https://XXXXXXXXXXXX/account/login");
            var loginRequest = new RestRequest(Method.POST);
            loginRequest.AddJsonBody(new { Username = txtUsername.Text, Password = txtPassword.Text });
            var loginResponse = loginUrl.Execute(loginRequest);
            var loginContent = JToken.Parse(loginResponse.Content);
            var loginCookies = loginResponse.Cookies;
            var antiforgerytokeCookie = loginCookies[1].Value;
            _accessToken = loginContent.Value<string>("access_token");

            var authenticateUrl = new RestClient("https://XXXXXXXXXXXX/account/ad/authenticate");
            var authRequest = new RestRequest(Method.POST);
            authRequest.AddHeader("X-XSRF-TOKEN", antiforgerytokeCookie);
            authRequest.AddHeader("Authorization", "Bearer " + _accessToken);
            var authResponse = authenticateUrl.Execute(authRequest);
            var infoContent = authResponse.Content;