ramalt / NET6API-JWT-AUTHORIZATON

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

.NET 6 API JWT AUTHORIZATION

Bu proje, .NET 6 kullanarak oluşturulan bir API içerir ve JWT kimlik doğrulama ve yetkilendirme işlemlerini içerir.

Tech Stack

.NET 6 Core, SQLite Database, JWT Tokens, Entity Framework, Entity Framework Identity

JWT Kimlik Doğrulama ve Yetkilendirme

Bu projede JWT kullanarak kimlik doğrulama ve yetkilendirme işlemleri gerçekleştirilir. JWT ayarları appsettings.json dosyasında yapılandırılabilir.

  • Issuer: JWT'nin oluşturucusu.
  • Audience: JWT'nin hedef kitlesi.
  • Secret: JWT'nin imzalanması için kullanılacak gizli anahtar.

JWT doğrulama ve yetkilendirme ayarlarına Program.cs dosyasında erişim sağlanmıştır.

API Endpointleri

API endpointleri aşağıdaki gibidir:

auth:

  • POST /api/auth/register: Kullanıcı kaydı yapar.
  • POST /api/auth/login: Kullanıcı girişi yapar.
  • POST /api/auth/refreshtoken: JWT token yenileme.

todo:

  • GET - /api/todo
  • GET - /api/todo/{id}
  • PUT - /api/todo/{id}
  • POST - /api/todo
  • DELETE - /api/todo/{id}

Roles and Claims

Default olarak Admin ve AppUser olmak üzere iki adet role bulunmaktadır. Kullanıcılar kayıt olduklarında, kullanıcılara default olarak "AppUser" rolü verilmektedir. Ayrıca roles tablosuna Admin için "Admin" rolüyle bir kullanıcı seed olmaktadır.

Kullanıcı kayıt olduğunda, Kullanıcıya "Type" Claim tanımlanmaktadır. Kullanıcılar için bu Claim "DefaultAppUser" olarak verilmektedir. bu claim, TodoController.cs rotalarında erişim için gerekli policy olarak şart koşulmuştur. gerekli Policy konfigrasyonları program.cs üzerinde yapılmıştır:

builder.Services.AddAuthorization(opt =>
{
    opt.AddPolicy("TypePolicy",
                    policy => policy.RequireClaim("Type"));
});

TodoController.cs;

[ApiController]
[Route("api/[controller]")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "AppUser", Policy = "TypePolicy")]
public class TodoController : ControllerBase
{

Güvenlik İpuçları

  • Kullanıcı parolalarını güvenli bir şekilde saklayın.
  • JWT güvenliği için gizli anahtarınızı koruyun.
  • API endpointlerini yetkilendirmek için rolleri ve izinleri yönetin.

Daha Fazla Bilgi

Daha fazla bilgi için proje kodunu inceleyin.

About


Languages

Language:C# 100.0%