ข้ามไปยังเนื้อหาหลัก
สำหรับเพื่อนใหม่ของเรา:

Logto คือทางเลือกแทน Auth0 ที่ออกแบบมาสำหรับแอปและผลิตภัณฑ์ SaaS ยุคใหม่ โดยมีทั้งบริการ Cloud และ Open-source เพื่อช่วยให้คุณเปิดตัวระบบการจัดการเอกลักษณ์และการเข้าถึง (IAM) ได้อย่างรวดเร็ว สนุกกับการยืนยันตัวตน (การยืนยันตัวตน), การอนุญาต (การอนุญาต), และการจัดการหลายผู้เช่า ครบจบในที่เดียว

เราแนะนำให้เริ่มต้นด้วย tenant สำหรับการพัฒนาแบบฟรีบน Logto Cloud เพื่อให้คุณสามารถสำรวจฟีเจอร์ทั้งหมดได้อย่างง่ายดาย

ในบทความนี้ เราจะพาคุณไปทีละขั้นตอนเพื่อสร้างประสบการณ์ลงชื่อเข้าใช้ X (Twitter) (การยืนยันตัวตนของผู้ใช้) อย่างรวดเร็วด้วย .NET Core (Razor Pages) และ Logto

ข้อกำหนดเบื้องต้น

  • มี Logto instance ที่พร้อมใช้งาน ดู หน้าแนะนำ เพื่อเริ่มต้นใช้งาน
  • มีความรู้พื้นฐานเกี่ยวกับ .NET Core (Razor Pages)
  • มีบัญชี X (Twitter) ที่ใช้งานได้

สร้างแอปพลิเคชันใน Logto

Logto สร้างขึ้นบนพื้นฐานของการยืนยันตัวตน OpenID Connect (OIDC) และการอนุญาต OAuth 2.0 โดยรองรับการจัดการข้อมูลระบุตัวตนแบบรวมศูนย์ข้ามหลายแอปพลิเคชัน ซึ่งมักเรียกว่า การลงชื่อเข้าใช้ครั้งเดียว (Single Sign-On; SSO)

ในการสร้างแอปพลิเคชัน เว็บแบบดั้งเดิม ของคุณ เพียงทำตามขั้นตอนเหล่านี้:

  1. เปิด Logto Console ในส่วน "เริ่มต้นใช้งาน" ให้คลิกที่ลิงก์ "ดูทั้งหมด" เพื่อเปิดรายการเฟรมเวิร์กของแอปพลิเคชัน หรือคุณสามารถไปที่ Logto Console > Applications แล้วคลิกปุ่ม "สร้างแอปพลิเคชัน" Get started
  2. ในหน้าต่างที่เปิดขึ้น ให้คลิกที่ส่วน "เว็บแบบดั้งเดิม" หรือกรองเฟรมเวิร์ก "เว็บแบบดั้งเดิม" ทั้งหมดที่มีโดยใช้ช่องกรองด่วนทางซ้ายมือ จากนั้นคลิกที่การ์ดเฟรมเวิร์ก ".NET Core (Razor Pages)" เพื่อเริ่มสร้างแอปพลิเคชันของคุณ Frameworks
  3. กรอกชื่อแอปพลิเคชัน เช่น "Bookstore" แล้วคลิก "สร้างแอปพลิเคชัน"

🎉 เยี่ยมมาก! คุณเพิ่งสร้างแอปพลิเคชันแรกของคุณใน Logto คุณจะเห็นหน้าข้อความแสดงความยินดีซึ่งมีคู่มือการเชื่อมต่ออย่างละเอียด ให้ทำตามคู่มือเพื่อดูประสบการณ์ที่จะเกิดขึ้นในแอปพลิเคชันของคุณ

ผสานรวม .NET Core (Razor Pages) กับ Logto

เคล็ดลับ:
  • ตัวอย่างสาธิตต่อไปนี้สร้างขึ้นบน .NET Core 8.0 โดย SDK สามารถใช้งานร่วมกับ .NET 6.0 ขึ้นไปได้
  • โปรเจกต์ตัวอย่าง .NET Core มีให้ใน GitHub repository

การติดตั้ง (Installation)

เพิ่มแพ็กเกจ NuGet ลงในโปรเจกต์ของคุณ:

dotnet add package Logto.AspNetCore.Authentication

เพิ่มการยืนยันตัวตน Logto (Add Logto authentication)

เปิด Startup.cs (หรือ Program.cs) และเพิ่มโค้ดต่อไปนี้เพื่อจดทะเบียนบริการการยืนยันตัวตน Logto:

Program.cs
using Logto.AspNetCore.Authentication;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddLogtoAuthentication(options =>
{
options.Endpoint = builder.Configuration["Logto:Endpoint"]!;
options.AppId = builder.Configuration["Logto:AppId"]!;
options.AppSecret = builder.Configuration["Logto:AppSecret"];
});

เมธอด AddLogtoAuthentication จะดำเนินการดังต่อไปนี้:

  • กำหนดสคีมการยืนยันตัวตนเริ่มต้นเป็น LogtoDefaults.CookieScheme
  • กำหนดสคีม challenge เริ่มต้นเป็น LogtoDefaults.AuthenticationScheme
  • กำหนดสคีม sign-out เริ่มต้นเป็น LogtoDefaults.AuthenticationScheme
  • เพิ่ม handler สำหรับ cookie และ OpenID Connect ลงในสคีมการยืนยันตัวตน

กระบวนการลงชื่อเข้าใช้และออกจากระบบ (Sign-in and sign-out flows)

ก่อนที่เราจะดำเนินการต่อ มีคำศัพท์ที่อาจสร้างความสับสนอยู่ 2 คำใน middleware การยืนยันตัวตนของ .NET Core ที่ควรชี้แจงให้ชัดเจน:

  1. CallbackPath: URI ที่ Logto จะเปลี่ยนเส้นทาง (redirect) ผู้ใช้กลับมาหลังจากที่ผู้ใช้ลงชื่อเข้าใช้แล้ว (คือ "redirect URI" ใน Logto)
  2. RedirectUri: URI ที่จะถูกเปลี่ยนเส้นทางไปหลังจากดำเนินการที่จำเป็นใน middleware การยืนยันตัวตนของ Logto เสร็จสิ้น

กระบวนการลงชื่อเข้าใช้สามารถอธิบายได้ดังนี้:


ในทำนองเดียวกัน .NET Core ยังมี SignedOutCallbackPath และ RedirectUri สำหรับขั้นตอนการลงชื่อออก

เพื่อความชัดเจน เราจะอ้างอิงคำเหล่านี้ดังนี้:

คำที่เราใช้คำศัพท์ใน .NET Core
Logto redirect URICallbackPath
Logto post sign-out redirect URISignedOutCallbackPath
Application redirect URIRedirectUri

เกี่ยวกับการลงชื่อเข้าใช้แบบเปลี่ยนเส้นทาง (redirect-based sign-in)

  1. กระบวนการยืนยันตัวตนนี้เป็นไปตามโปรโตคอล OpenID Connect (OIDC) และ Logto บังคับใช้มาตรการรักษาความปลอดภัยอย่างเข้มงวดเพื่อปกป้องการลงชื่อเข้าใช้ของผู้ใช้
  2. หากคุณมีหลายแอป คุณสามารถใช้ผู้ให้บริการข้อมูลระบุตัวตน (Logto) เดียวกันได้ เมื่อผู้ใช้ลงชื่อเข้าใช้แอปหนึ่งแล้ว Logto จะดำเนินการลงชื่อเข้าใช้โดยอัตโนมัติเมื่อผู้ใช้เข้าถึงแอปอื่น

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเหตุผลและประโยชน์ของการลงชื่อเข้าใช้แบบเปลี่ยนเส้นทาง โปรดดูที่ อธิบายประสบการณ์การลงชื่อเข้าใช้ของ Logto

กำหนดค่า redirect URI (Configure redirect URIs)

บันทึก:

ในตัวอย่างโค้ดต่อไปนี้ เราถือว่าแอปของคุณกำลังทำงานอยู่ที่ http://localhost:3000/

ก่อนอื่น มาตั้งค่า Logto redirect URI กันก่อน เพิ่ม URI ต่อไปนี้ลงในรายการ "Redirect URIs" ในหน้ารายละเอียดแอป Logto:

http://localhost:3000/Callback

หากต้องการตั้งค่า Logto post sign-out redirect URI ให้เพิ่ม URI ต่อไปนี้ลงในรายการ "Post sign-out redirect URIs" ในหน้ารายละเอียดแอป Logto:

http://localhost:3000/SignedOutCallback

เปลี่ยนเส้นทางเริ่มต้น

Logto redirect URI มีเส้นทางเริ่มต้นเป็น /Callback และ Logto post sign-out redirect URI มีเส้นทางเริ่มต้นเป็น /SignedOutCallback

คุณสามารถปล่อยไว้ตามเดิมหากไม่มีข้อกำหนดพิเศษ หากต้องการเปลี่ยน สามารถตั้งค่าคุณสมบัติ CallbackPath และ SignedOutCallbackPath สำหรับ LogtoOptions ได้ดังนี้:

Program.cs
builder.Services.AddLogtoAuthentication(options =>
{
// การตั้งค่าอื่น ๆ...
options.CallbackPath = "/Foo";
options.SignedOutCallbackPath = "/Bar";
});

อย่าลืมอัปเดตค่าดังกล่าวในหน้ารายละเอียดแอป Logto ให้ตรงกันด้วย

สร้างปุ่มลงชื่อเข้าใช้ / ออกจากระบบ (Implement sign-in / sign-out buttons)

ก่อนอื่น ให้เพิ่มเมธอด handler ลงใน PageModel ของคุณ ตัวอย่างเช่น:

Pages/Index.cshtml.cs
// เพิ่มเมธอด handler สำหรับการลงชื่อเข้าใช้และออกจากระบบ
public class IndexModel : PageModel
{
public async Task OnPostSignInAsync()
{
await HttpContext.ChallengeAsync(new AuthenticationProperties
{
RedirectUri = "/"
});
}

public async Task OnPostSignOutAsync()
{
await HttpContext.SignOutAsync(new AuthenticationProperties
{
RedirectUri = "/"
});
}
}

จากนั้น เพิ่มปุ่มลงในหน้า Razor ของคุณ:

Pages/Index.cshtml
<p>ตรวจสอบการยืนยันตัวตน: @User.Identity?.IsAuthenticated</p>
<form method="post">
@if (User.Identity?.IsAuthenticated == true) {
<button type="submit" asp-page-handler="SignOut">ออกจากระบบ</button>
} else {
<button type="submit" asp-page-handler="SignIn">ลงชื่อเข้าใช้</button>
}
</form>

ระบบจะแสดงปุ่ม "ลงชื่อเข้าใช้" หากผู้ใช้ยังไม่ได้รับการยืนยันตัวตน และจะแสดงปุ่ม "ออกจากระบบ" หากผู้ใช้ได้รับการยืนยันตัวตนแล้ว

จุดตรวจสอบ: ทดสอบแอปพลิเคชันของคุณ

ตอนนี้คุณสามารถทดสอบแอปพลิเคชันของคุณได้แล้ว:

  1. รันแอปพลิเคชันของคุณ คุณจะเห็นปุ่มลงชื่อเข้าใช้
  2. คลิกปุ่มลงชื่อเข้าใช้ SDK จะเริ่มกระบวนการลงชื่อเข้าใช้และเปลี่ยนเส้นทางคุณไปยังหน้าลงชื่อเข้าใช้ของ Logto
  3. หลังจากที่คุณลงชื่อเข้าใช้แล้ว คุณจะถูกเปลี่ยนเส้นทางกลับไปยังแอปพลิเคชันของคุณและเห็นปุ่มลงชื่อออก
  4. คลิกปุ่มลงชื่อออกเพื่อเคลียร์ที่เก็บโทเค็นและออกจากระบบ

เพิ่มตัวเชื่อมต่อ X (Twitter)

เพื่อเปิดใช้งานการลงชื่อเข้าใช้อย่างรวดเร็วและเพิ่มอัตราการเปลี่ยนผู้ใช้ ให้เชื่อมต่อกับ .NET Core (Razor Pages) ในฐานะผู้ให้บริการข้อมูลระบุตัวตน (Identity provider) ตัวเชื่อมต่อโซเชียลของ Logto ช่วยให้คุณสร้างการเชื่อมต่อนี้ได้ภายในไม่กี่นาที โดยสามารถกรอกพารามิเตอร์ได้หลายค่า

ในการเพิ่มตัวเชื่อมต่อโซเชียล ให้ทำตามขั้นตอนดังนี้:

  1. ไปที่ Console > Connectors > Social Connectors
  2. คลิก "Add social connector" และเลือก "X (Twitter)"
  3. ทำตามคู่มือ README กรอกข้อมูลที่จำเป็น และปรับแต่งการตั้งค่า
Connector tab
บันทึก:

หากคุณกำลังทำตามคู่มือ Connector แบบ in-place คุณสามารถข้ามส่วนถัดไปได้

ตั้งค่า X OAuth app

สร้างแอปใน X Developer Portal

ไปที่ X Developer Portal และลงชื่อเข้าใช้ด้วยบัญชี X ของคุณ หากยังไม่มีบัญชี คุณสามารถลงทะเบียนได้

จากนั้น สร้างแอปของคุณ

ขั้นตอนที่ 1: ไปยังส่วนสร้างแอป

เมื่อเข้าสู่ระบบแล้ว ให้ไปที่ส่วน "Projects & Apps" และคลิก "Create App" (หรือ "New App" ขึ้นอยู่กับหน้าตาอินเทอร์เฟซ)

ขั้นตอนที่ 2: กรอกรายละเอียดแอป

กรอกแบบฟอร์มด้วยข้อมูลต่อไปนี้:

  • App Name: ระบุชื่อแอปพลิเคชันที่ไม่ซ้ำและสื่อความหมาย
  • Application Description: (ไม่บังคับ) เพิ่มคำอธิบายสั้น ๆ ว่าแอปของคุณทำอะไร
  • Website URL: ใส่ URL หน้าแรกของแอปพลิเคชันของคุณ
  • Callback URL / Redirect URI: ในกรณีนี้จะเป็น ${your_logto_endpoint}/callback/${connector_id} เช่น https://foo.logto.app/callback/${connector_id} โดย connector_id สามารถดูได้ที่แถบด้านบนของหน้ารายละเอียดตัวเชื่อมต่อใน Logto Admin Console

ขั้นตอนที่ 3: เลือกสิทธิ์ (permissions) และขอบเขต (scopes)

เลือกสิทธิ์ที่แอปของคุณต้องการ สำหรับการเข้าสู่ระบบโซเชียลผ่าน X ให้แน่ใจว่าได้เปิดใช้งานขอบเขตที่จำเป็นคือ tweet.read และ users.read

ขั้นตอนที่ 4: บันทึกแอปของคุณ

คลิก "Create" หรือ "Save" เพื่อบันทึกและลงทะเบียนแอปของคุณ

หลังจากสร้างเสร็จ ให้ไปที่ส่วน "Keys and tokens" ของแอปเพื่อดึง OAuth 2.0 Client ID และ Client Secret ของคุณ

กำหนดค่าตัวเชื่อมต่อของคุณ

ในหน้ากำหนดค่าตัวเชื่อมต่อ Logto ของคุณ ให้กรอกข้อมูลในช่องต่อไปนี้ด้วยค่าที่ได้จากหน้า "Keys and tokens" ของแอปในส่วน "OAuth 2.0 Client ID and Client Secret":

  • clientId: Client ID ของแอปของคุณ
  • clientSecret: Client Secret ของแอปของคุณ

scope คือรายการ ขอบเขต (scopes) ที่คั่นด้วยช่องว่าง หากไม่ได้ระบุไว้ ขอบเขตเริ่มต้นคือ tweet.read users.read

ประเภทของการกำหนดค่า

NameType
clientIdstring
clientSecretstring
scopestring

บันทึกการตั้งค่าของคุณ

โปรดตรวจสอบให้แน่ใจว่าคุณได้กรอกค่าที่จำเป็นในพื้นที่การตั้งค่าตัวเชื่อมต่อ Logto เรียบร้อยแล้ว คลิก "บันทึกและเสร็จสิ้น" (หรือ "บันทึกการเปลี่ยนแปลง") และตัวเชื่อมต่อ X (Twitter) ควรพร้อมใช้งานแล้ว

เปิดใช้งานตัวเชื่อมต่อ X (Twitter) ในประสบการณ์การลงชื่อเข้าใช้

เมื่อคุณสร้างตัวเชื่อมต่อโซเชียลสำเร็จแล้ว คุณสามารถเปิดใช้งานเป็นปุ่ม "ดำเนินการต่อด้วย X (Twitter)" ในประสบการณ์การลงชื่อเข้าใช้ (Sign-in Experience) ได้

  1. ไปที่ Console > ประสบการณ์การลงชื่อเข้าใช้ > สมัครและลงชื่อเข้าใช้
  2. (ไม่บังคับ) เลือก "ไม่เกี่ยวข้อง" สำหรับตัวระบุการสมัคร หากคุณต้องการเฉพาะการเข้าสู่ระบบโซเชียล
  3. เพิ่มตัวเชื่อมต่อ X (Twitter) ที่ตั้งค่าไว้แล้วในส่วน "เข้าสู่ระบบโซเชียล" (Social sign-in)
แท็บประสบการณ์การลงชื่อเข้าใช้ (Sign-in Experience tab)

การทดสอบและการตรวจสอบความถูกต้อง

กลับไปที่แอป .NET Core (Razor Pages) ของคุณ ตอนนี้คุณควรจะสามารถลงชื่อเข้าใช้ด้วย X (Twitter) ได้แล้ว ขอให้สนุก!

อ่านเพิ่มเติม

กระบวนการสำหรับผู้ใช้ปลายทาง: Logto มีโฟลว์การยืนยันตัวตนสำเร็จรูปพร้อมใช้งาน รวมถึง MFA และ Enterprise SSO พร้อม API อันทรงพลังสำหรับการปรับแต่งการตั้งค่าบัญชี การตรวจสอบความปลอดภัย และประสบการณ์แบบหลายผู้เช่า (multi-tenant) ได้อย่างยืดหยุ่น

การอนุญาต (Authorization): การอนุญาต (Authorization) กำหนดว่าผู้ใช้สามารถทำอะไรหรือเข้าถึงทรัพยากรใดได้บ้างหลังจากได้รับการยืนยันตัวตนแล้ว สำรวจวิธีปกป้อง API ของคุณสำหรับแอปเนทีฟและแอปหน้าเดียว (SPA) และการใช้งานการควบคุมการเข้าถึงตามบทบาท (RBAC)

องค์กร (Organizations): ฟีเจอร์องค์กรมีประสิทธิภาพอย่างยิ่งใน SaaS แบบหลายผู้เช่าและแอป B2B โดยช่วยให้สร้างผู้เช่า จัดการสมาชิก RBAC ระดับองค์กร และ Just-in-Time Provisioning ได้

ชุดบทความ Customer IAM: บทความต่อเนื่องเกี่ยวกับการจัดการข้อมูลระบุตัวตนและการเข้าถึงของลูกค้า (Customer IAM) ตั้งแต่ระดับพื้นฐาน 101 ไปจนถึงหัวข้อขั้นสูงและอื่น ๆ