دسته بندی ها
20:25 1398/09/21

آموزش JWT در Asp.net core

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 5526
هوش مصنوعی

پاسخ هوش مصنوعی

JWT یا JSON Web Token یک استاندارد برای انتقال اطلاعات به صورت ایمن بین دو طرف است. این اطلاعات می تواند شامل احراز هویت کاربر، مجوز دسترسی و دیگر اطلاعات کاربردی باشد. JWT به خاطر ساختار آن (سه بخش هدر، بار و امضا) به راحتی قابل بررسی و تأیید است و برای اپلیکیشن های وب و موبایل استفاده می شود.

برای استفاده از JWT در ASP.NET Core، مراحل زیر را دنبال کنید:

1. نصب بسته های مورد نیاز:
   در پروژه ASP.NET Core خود، بسته `System.IdentityModel.Tokens.Jwt` را نصب کنید. این کار را با استفاده از NuGet Package Manager انجام دهید:

   ```
   Install-Package System.IdentityModel.Tokens.Jwt
   ```

2. تنظیمات JWT در `Startup.cs`:
   در متد `ConfigureServices`، سرویس های مورد نیاز برای JWT را تنظیم کنید:

   ```csharp
   public void ConfigureServices(IServiceCollection services)
   {
       services.AddAuthentication(options =>
       {
           options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
           options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
       })
       .AddJwtBearer(options =>
       {
           options.TokenValidationParameters = new TokenValidationParameters
           {
               ValidateIssuer = true,
               ValidateAudience = true,
               ValidateLifetime = true,
               ValidateIssuerSigningKey = true,
               ValidIssuer = "your-issuer",
               ValidAudience = "your-audience",
               IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"))
           };
       });
       services.AddControllers();
   }
   ```

3. تولید الگوهای JWT:
   در جایی از کد خود، الگوهای JWT را تولید کنید، برای مثال در یک متد لاگین:

   ```csharp
   private string GenerateJwtToken(string userName)
   {
       var claims = new[]
       {
           new Claim(JwtRegisteredClaimNames.Sub, userName),
           new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
       };

       var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"));
       var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
       var token = new JwtSecurityToken(
           issuer: "your-issuer",
           audience: "your-audience",
           claims: claims,
           expires: DateTime.Now.AddMinutes(30),
           signingCredentials: creds);

       return new JwtSecurityTokenHandler().WriteToken(token);
   }
   ```

4. استفاده از JWT در کنترلرها:
   در کنترلرهای خود از `[Authorize]` برای محافظت از APIها استفاده کنید:

   ```csharp
   [Authorize]
   [ApiController]
   [Route("api/[controller]")]
   public class TestController : ControllerBase
   {
       [HttpGet]
       public IActionResult Get()
       {
           return Ok("This is a protected resource.");
       }
   }
   ```

با این مراحل، شما می توانید از JWT در پروژه ASP.NET Core خود استفاده کنید. برای اطلاعات بیشتر، می توانید به مستندات رسمی Microsoft در مورد JWT مراجعه کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 20:28 1398/09/21

آشنایی با jwt

 

آشنایی با JWT

مکانیزم JWT یک روش برای Authorization تحت وب است به این صورت که کلاینت نام کاربری و رمز ورود خود را به سرور ارسال میکند و سرور در صورت درست بودن اطلاعات (Authenticate) کدی با محتوای base64 تولید میکند و آن را به کلاینت ارسال میکند. 

از اینجا به بعد کلاینت برای دریافت اطلاعات از سرور  فقط کافی است کد (نشان) دریافت شده را درون Header قرار دهد و در هر درخواست به سرور ارسال کند. سرور از روی الگوریتم داده ها را به امضای دیجیتال تبدیل میکند و آن را با امضای نشان  مطابقت میدهد.

نشان JWT شامل سه بخش است :

بخش اول Header که نوع الگوریتم تولید امضا را مشخص میکند. 

بخش دوم  Payload که محتوای اطلاعات شامل نام کاربری، آی دی یا سمت و ... است.

بخش سوم Signature که یک امضای دیجیتال است که از روی الگوریتم رمزگذاری و اطلاعات بخش دوم تهیه میشود تا اطمینان حاصل شود محتوای نشان تغییر نمیکند. 

هر بخش با نقطه از هم تفکیک میشود.

این روش گاهی Bearer token هم خوانده میشود. 

اطلاعات توکن با فرمت Base64 جابجا میشود و رمزنگاری نشده است و توسط هر کس قابل خواندن است مگر اینکه از روشهایی مثل JWS یا JWE استفاده شود.

فیلم آموزش احراز هویت توسط JWT در Asp.net Core (رایگان) 

ویرایش شده در پنج شنبه 24 شهریور 1401 ساعت 01:39:51
به این پاسخ امتیاز بدهید    1
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود