การ Authen ASP.NET Core ด้วย Keycloak ผ่าน OpenID Connect

wk
2 min readNov 12, 2019

--

Keycloak / OpenID Connect คือ อะไร

1. ติดตั้ง Keycloak

  • สร้างไฟล์ docker-compose.yml
  • รันโปรแกรมด้วยคำสั่ง docker-compose up
  • เข้าโปรแกรมผ่าน URL http://localhost:8080
  • Login ด้วย User/Password admin/admin

2. สร้าง Client บน Keycloak

  • สร้าง Client เชื่อ hello สำหรับ Authen ผ่าน OpenID Connect โดยตั้งค่า ดังนี้
  • ในแท็บ Credentials จะมี Client secret ให้คัดลอกค่านี้ไว้

3. สร้างโปรเจค ASP.NET

  • ใช้คำสั่ง dotnet new สร้างโปรเจคชื่อ MyWeb
$ dotnet new -i Microsoft.DotNet.Web.ProjectTemplates.2.2::2.2.6
$ dotnet new webapi \
--language C# \
--output tests/MyWeb -f netcoreapp2.2
  • ติดตั้ง Package
dotnet add package Microsoft.AspNetCore.Authentication.Cookies
dotnet add package Microsoft.AspNetCore.Authentication.OpenIdConnect
  • เพิ่ม Extension method ชื่อ AddIdentityService
  • Register AddIdentityService ในไฟล์ Startup.cs โดยใช้ Client secret ที่ได้จาก ข้อ 2
  • เขียน Controller สำหรับทดสอบโดยเพิ่ม Attribute Authorize ในคลาส
  • รันโปรแกรม
$ dotnet run --project src/MyWeb/MyWeb.csproj
  • ทดสอบ โดยเข้าไปที่ URL http://localhost:5000/api/hello/hi
  • โปรแกรมจะ Redirect ไปที่หน้า Login ของ Keycloak ให้ใส่ User/Password admin/admin
  • เมื่อ Login สำเร็จ โปรแกรมจะ Redirect กลับมาที่ Controller (http://localhost:5000/api/hello/hi) และแสดงข้อความว่า Hello

--

--

No responses yet