การกำหนดค่าการยืนยันตัวตน JWT Bearer
เชื่อมการตรวจสอบโทเค็นเข้ากับไปป์ไลน์
การกำหนดค่าการยืนยันตัวตน JWT Bearer เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตัวจัดการ JWT Bearer
ASP.NET Core ตรวจสอบความถูกต้องของ JWT ขาเข้าโดยใช้ ตัวจัดการการยืนยันตัวตนด้วย JWT Bearer จากแพ็กเกจ Microsoft.AspNetCore.Authentication.JwtBearer
ตัวจัดการนี้อ่านโทเค็นจากส่วนหัว Authorization: Bearer ... ตรวจสอบความถูกต้อง แล้วสร้าง ClaimsPrincipal
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearerAddAuthentication
การลงทะเบียนเริ่มต้นด้วย AddAuthentication คุณกำหนด แบบแผนเริ่มต้น เพื่อให้เฟรมเวิร์กทราบว่าควรใช้ตัวจัดการใดเมื่อไม่ได้ระบุแบบแผน
JwtBearerDefaults.AuthenticationScheme คือสตริง "Bearer"
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer();ตัวเลือก AddJwtBearer
รูปแบบของ AddJwtBearer รับตัวแทนตัวเลือก ซึ่งคุณใช้กำหนดค่าวิธีตรวจสอบความถูกต้องของโทเค็น
คุณสมบัติที่สำคัญที่สุดคือ TokenValidationParameters
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
// configured below
};
});การตรวจสอบผู้ออกและกลุ่มผู้รับ
ตั้งค่า ValidateIssuer และ ValidateAudience เพื่อให้แน่ใจว่าโทเค็นมาจากหน่วยงานที่เชื่อถือได้และมีไว้สำหรับ API ของคุณ
ValidIssuer และ ValidAudience ต้องตรงกับข้อมูลอ้างสิทธิ์ iss และ aud ในโทเค็น
var tvp = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidateAudience = true,
ValidAudience = builder.Configuration["Jwt:Audience"]
};การตรวจสอบคีย์สำหรับลงนาม
การตรวจสอบที่สำคัญที่สุดด้านความปลอดภัยคือ ValidateIssuerSigningKey ร่วมกับ IssuerSigningKey ซึ่งยืนยันว่าลายเซ็นถูกสร้างขึ้นด้วยข้อมูลลับของคุณ
สำหรับการลงนามแบบสมมาตร (HS256) ให้สร้าง SymmetricSecurityKey จากไบต์ของข้อมูลลับ
var key = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!));
tvp.ValidateIssuerSigningKey = true;
tvp.IssuerSigningKey = key;การตรวจสอบอายุการใช้งาน
ValidateLifetime = true จะปฏิเสธโทเค็นที่หมดอายุโดยตรวจสอบข้อมูลอ้างสิทธิ์ exp และ nbf
ClockSkew เพิ่มค่าผ่อนผันสำหรับความแตกต่างของเวลาระหว่างเซิร์ฟเวอร์ ค่าเริ่มต้นคือ 5 นาที ควรลดค่านี้สำหรับโทเค็นที่มีอายุสั้น
tvp.ValidateLifetime = true;
tvp.ClockSkew = TimeSpan.FromSeconds(30);นำทุกส่วนมารวมกัน
การกำหนดค่าแบบสมบูรณ์สำหรับใช้งานจริงจะรวมพารามิเตอร์การตรวจสอบความถูกต้องทั้งหมดไว้ในที่เดียว
builder.Services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidateAudience = true,
ValidAudience = builder.Configuration["Jwt:Audience"],
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!)),
ValidateLifetime = true,
ClockSkew = TimeSpan.FromSeconds(30)
};
});ลำดับมิดเดิลแวร์
การกำหนดค่าเพียงอย่างเดียวยังไม่เพียงพอ คุณต้องเพิ่มมิดเดิลแวร์สำหรับ การยืนยันตัวตน และ การอนุญาต ลงในลำดับการประมวลผล และลำดับก็มีความสำคัญ
UseAuthentication ต้องอยู่ก่อน UseAuthorization
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();การปกป้องจุดปลายทาง
เมื่อกำหนดค่าแล้ว ให้ทำเครื่องหมายจุดปลายทางด้วย [Authorize] (ตัวควบคุม) หรือ .RequireAuthorization() (API แบบมินิมอล) เพื่อกำหนดให้ต้องมีโทเค็นที่ถูกต้อง
app.MapGet("/me", (ClaimsPrincipal user) =>
new { id = user.FindFirstValue(ClaimTypes.NameIdentifier) })
.RequireAuthorization();การใช้หน่วยงานที่เชื่อถือได้
หากโทเค็นของคุณมาจากผู้ให้บริการยืนยันตัวตนภายนอก เช่น Microsoft Entra ID หรือ Auth0 ให้ตั้งค่า Authority แทนการใช้คีย์แบบคงที่
จากนั้นตัวจัดการจะดาวน์โหลดคีย์สำหรับลงนามจากเอกสารค้นพบของผู้ให้บริการโดยอัตโนมัติ
.AddJwtBearer(options =>
{
options.Authority = "https://login.myidp.com/";
options.Audience = "my-api";
// Keys are fetched from the OpenID configuration endpoint
});การอ่านสาเหตุที่การตรวจสอบล้มเหลว
JWT Bearer จะเรียกใช้ เหตุการณ์ ที่คุณเชื่อมต่อเพื่อบันทึกเหตุการณ์หรือตอบกลับแบบกำหนดเองได้ เช่น OnAuthenticationFailed และ OnChallenge
options.Events = new JwtBearerEvents
{
OnAuthenticationFailed = ctx =>
{
logger.LogWarning(ctx.Exception, "JWT validation failed");
return Task.CompletedTask;
}
};ตรวจสอบความเข้าใจ
ตรวจสอบความเข้าใจเกี่ยวกับการกำหนดค่าลำดับการประมวลผล
ทบทวน
คุณได้กำหนดค่าการยืนยันตัวตนด้วย JWT Bearer แล้ว:
AddAuthentication(...).AddJwtBearer(...)ลงทะเบียนตัวจัดการTokenValidationParametersควบคุมการตรวจสอบผู้ออก กลุ่มผู้รับ คีย์สำหรับลงนาม และอายุการใช้งานUseAuthentication()ต้องอยู่ก่อนUseAuthorization()- ใช้
Authorityสำหรับผู้ให้บริการยืนยันตัวตนภายนอก
ต่อไป: วิธีออกโทเค็นของคุณเอง
เรียนรู้ C# ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 93
- บทเรียน
- 346
คำถามที่พบบ่อย
บทเรียน “การกำหนดค่าการยืนยันตัวตน JWT Bearer” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนดค่าการยืนยันตัวตน JWT Bearer” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดค่าการยืนยันตัวตน JWT Bearer”
เชื่อมการตรวจสอบโทเค็นเข้ากับไปป์ไลน์ คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนดค่าการยืนยันตัวตน JWT Bearer” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงสร้างและข้ออ้างสิทธิ์ของ JWT
- การกำหนดค่าการยืนยันตัวตน JWT Bearer
- การออกโทเค็น
- โทเค็นรีเฟรชและวันหมดอายุ