Index: ChapterX.API/ChapterX.API.csproj
===================================================================
--- ChapterX.API/ChapterX.API.csproj	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
+++ ChapterX.API/ChapterX.API.csproj	(revision e294f7d2cedd462a923c69ae9f85c996b5377c69)
@@ -8,4 +8,5 @@
 
   <ItemGroup>
+    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0" />
     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0">
       <PrivateAssets>all</PrivateAssets>
Index: ChapterX.API/Controllers/AuthController.cs
===================================================================
--- ChapterX.API/Controllers/AuthController.cs	(revision e294f7d2cedd462a923c69ae9f85c996b5377c69)
+++ ChapterX.API/Controllers/AuthController.cs	(revision e294f7d2cedd462a923c69ae9f85c996b5377c69)
@@ -0,0 +1,35 @@
+using ChapterX.Application.Auth;
+using MediatR;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace ChapterX.API.Controllers
+{
+    [Route("api/[controller]")]
+    [ApiController]
+    public class AuthController : ControllerBase
+    {
+        private readonly IMediator _mediator;
+
+        public AuthController(IMediator mediator)
+        {
+            _mediator = mediator;
+        }
+
+        [HttpPost("register")]
+        [AllowAnonymous]
+        public async Task<ActionResult> Register([FromBody] RegisterRequest request)
+        {
+            var response = await _mediator.Send(request);
+            return Ok(response);
+        }
+
+        [HttpPost("login")]
+        [AllowAnonymous]
+        public async Task<ActionResult> Login([FromBody] LoginRequest request)
+        {
+            var response = await _mediator.Send(request);
+            return Ok(response);
+        }
+    }
+}
Index: ChapterX.API/Program.cs
===================================================================
--- ChapterX.API/Program.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
+++ ChapterX.API/Program.cs	(revision e294f7d2cedd462a923c69ae9f85c996b5377c69)
@@ -1,5 +1,8 @@
 using ChapterX.Application;
 using ChapterX.Infrastructure;
+using Microsoft.AspNetCore.Authentication.JwtBearer;
+using Microsoft.IdentityModel.Tokens;
 using System.Reflection;
+using System.Text;
 
 var builder = WebApplication.CreateBuilder(args);
@@ -10,7 +13,44 @@
 {
     options.CustomSchemaIds(type => type.FullName);
+    options.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme
+    {
+        Name = "Authorization",
+        Type = Microsoft.OpenApi.Models.SecuritySchemeType.Http,
+        Scheme = "Bearer",
+        BearerFormat = "JWT",
+        In = Microsoft.OpenApi.Models.ParameterLocation.Header,
+        Description = "Enter your JWT token"
+    });
+    options.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement
+    {
+        {
+            new Microsoft.OpenApi.Models.OpenApiSecurityScheme
+            {
+                Reference = new Microsoft.OpenApi.Models.OpenApiReference
+                {
+                    Type = Microsoft.OpenApi.Models.ReferenceType.SecurityScheme,
+                    Id = "Bearer"
+                }
+            },
+            Array.Empty<string>()
+        }
+    });
 });
 
-builder.Services.AddAuthentication();
+builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
+    .AddJwtBearer(options =>
+    {
+        options.TokenValidationParameters = new TokenValidationParameters
+        {
+            ValidateIssuer = true,
+            ValidateAudience = true,
+            ValidateLifetime = true,
+            ValidateIssuerSigningKey = true,
+            ValidIssuer = builder.Configuration["Jwt:Issuer"],
+            ValidAudience = builder.Configuration["Jwt:Audience"],
+            IssuerSigningKey = new SymmetricSecurityKey(
+                Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!))
+        };
+    });
 builder.Services.AddAuthorization();
 
Index: ChapterX.API/appsettings.json
===================================================================
--- ChapterX.API/appsettings.json	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
+++ ChapterX.API/appsettings.json	(revision e294f7d2cedd462a923c69ae9f85c996b5377c69)
@@ -6,4 +6,9 @@
     }
   },
-  "AllowedHosts": "*"
+  "AllowedHosts": "*",
+  "Jwt": {
+    "Key": "change-this-to-a-long-secret-key-at-least-32-chars!!",
+    "Issuer": "ChapterX",
+    "Audience": "ChapterX"
+  }
 }
