ข้ามไปยังเนื้อหาหลัก

Hasura

ก่อนการผสานรวม, เราต้องทำการติดตั้ง Casdoor ในเครื่องของเราก่อน

จากนั้นเราสามารถสร้างหน้าล็อกอินที่ใช้ Casdoor ได้อย่างรวดเร็วในแอปพลิเคชันของเราตามขั้นตอนต่อไปนี้

ตั้งค่าแอปพลิเคชัน Casdoor

  1. สร้างหรือใช้แอปพลิเคชัน Casdoor ที่มีอยู่แล้ว
  2. เพิ่ม URL สำหรับการเปลี่ยนเส้นทาง: http://CASDOOR_HOSTNAME/login การตั้งค่าแอปพลิเคชัน Casdoor
  3. คัดลอก client ID; เราจะต้องใช้มันในขั้นตอนต่อไป

เพิ่มผู้ใช้ใน Casdoor

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

ไปที่หน้า "Users" และคลิกที่ "Add user" ที่มุมขวาบน เมื่อคลิกแล้วจะเปิดหน้าใหม่ที่คุณสามารถเพิ่มผู้ใช้ใหม่

รูปภาพแสดงหน้าผู้ใช้

บันทึกผู้ใช้หลังจากเพิ่มชื่อผู้ใช้และเพิ่มองค์กร Hasura (รายละเอียดอื่นๆ เป็นทางเลือก)

ตอนนี้คุณต้องตั้งค่ารหัสผ่านสำหรับผู้ใช้ของคุณ, ซึ่งคุณสามารถทำได้โดยคลิกที่ "manage your password"

เลือกรหัสผ่านสำหรับผู้ใช้ของคุณและยืนยันมัน

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

เริ่ม Hasura โดยใช้ Docker หรือ Hasura Cloud

ตอนนี้สร้างตาราง users พร้อมคอลัมน์ต่อไปนี้:

  • id ประเภทข้อความ (Primary Key)
  • username ประเภทข้อความ

ดูรูปภาพด้านล่างเพื่ออ้างอิง

รูปภาพแสดงวิธีการสร้างตารางใน Hasura

ขั้นตอนต่อไปคือการสร้างบทบาท user สำหรับแอป ผู้ใช้ควรจะสามารถเห็นเฉพาะบันทึกของตัวเอง แต่ไม่ใช่บันทึกของคนอื่น

ตั้งค่าบทบาท user ตามที่แสดงในรูปภาพด้านล่าง For more information, read about configuring permission rules in Hasura.

รูปภาพแสดงวิธีการตั้งค่าการอนุญาตใน Hasura

ด้วยวิธีนี้, ผู้ใช้ไม่สามารถอ่านบันทึกของคนอื่นได้ พวกเขาสามารถเข้าถึงข้อมูลของตัวเองเท่านั้น

สำหรับวัตถุประสงค์ในการทดสอบ, เพิ่มผู้ใช้ทดลอง นี่เป็นเพื่อให้แน่ใจว่าเมื่อคุณใช้โทเค็น JWT, คุณจะเห็นเฉพาะรายละเอียดของผู้ใช้ของคุณเองและไม่ใช่รายละเอียดของผู้ใช้อื่น

รูปภาพแสดงวิธีการเพิ่มบันทึกตารางใน Hasura

ตอนนี้คุณต้องตั้งค่า JWT_SECRET ใน Hasura

ตั้งค่า Hasura กับ Casdoor

ในขั้นตอนนี้, คุณต้องเพิ่ม HASURA_GRAPHQL_JWT_SECRET ใน Hasura

เพื่อทำเช่นนั้น, ไปที่ไฟล์ docker-compose.yaml ของ Hasura แล้วเพิ่ม HASURA_GRAPHQL_JWT_SECRET ใหม่ดังนี้

ค่า HASURA_GRAPHQL_JWT_SECRET ควรจะมีรูปแบบดังต่อไปนี้ อย่าลืมเปลี่ยน <Casdoor endpoint> เป็น URL ของ Casdoor ของคุณเอง (เช่น https://door.casdoor.com)

HASURA_GRAPHQL_JWT_SECRET: '{"claims_map": {
"x-hasura-allowed-roles": {"path": "$.roles"},
"x-hasura-default-role": {"path": "$.roles[0]"},
"x-hasura-user-id": {"path": "$.id"}
},"jwk_url":"<Casdoor endpoint>/.well-known/jwks"}'

บันทึกการเปลี่ยนแปลงและรีโหลด docker

เพิ่ม URL JWT ของ Clerk ใน Hasura

เรียกคืนโทเค็น JWT

เนื่องจากไม่มีการดำเนินการของไคลเอนต์, คุณสามารถรับ access token ของคุณได้โดยทำการร้องขอด้วย URL ด้านล่าง:

http://localhost:8000/login/oauth/authorize?client_id=<client ID>&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flogin&scope=read&state=app-built-in<public certificate>>

เปลี่ยน client ID เป็น ID ที่คุณได้คัดลอกไว้ก่อนหน้านี้ และใส่ใบรับรองสาธารณะของ Casdoor ซึ่งคุณสามารถหาได้ในหน้า Certs ของ Casdoor

จากนั้นใส่ชื่อผู้ใช้และรหัสผ่านที่คุณสร้างสำหรับ Hasura ก่อนหน้านี้

คลิกที่ "เข้าสู่ระบบ"

เรียกคืนโทเค็น JWT

กลับไปที่หน้า Casdoor/Token

หน้า Token

ค้นหาชื่อผู้ใช้ที่คุณได้ใส่ไว้ก่อนหน้านี้ แล้วคลิกที่ "แก้ไข"

คัดลอก Access Token

Access Token

ตอนนี้คุณสามารถใช้ access token เพื่อทำการร้องขอที่ผ่านการตรวจสอบสิทธิ์ Hasura ส่งคืนข้อมูลผู้ใช้ที่เหมาะสมแทนที่จะส่งคืนข้อมูลผู้ใช้ทั้งหมดจากฐานข้อมูล

ภาพที่แสดงการใช้ access token จาก Casdoor ใน Hasura