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

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 ตามที่แสดงในรูปภาพด้านล่าง สำหรับข้อมูลเพิ่มเติม, อ่านเกี่ยวกับ การตั้งค่ากฎการอนุญาตใน 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