Hasura
ก่อนการผสานรวม, เราต้องทำการติดตั้ง Casdoor ในเครื่องของเราก่อน
จากนั้นเราสามารถสร้างหน้าล็อกอินที่ใช้ Casdoor ได้อย่างรวดเร็วในแอปพลิเคชันของเราตามขั้นตอนต่อไปนี้
ตั้งค่าแอปพลิเคชัน Casdoor
- สร้างหรือใช้แอปพลิเคชัน Casdoor ที่มีอยู่แล้ว
- เพิ่ม URL สำหรับการเปลี่ยนเส้นทาง:
http://CASDOOR_HOSTNAME/login
- คัดลอก client ID; เราจะต้องใช้มันในขั้นตอนต่อไป
เพิ่มผู้ใช้ใน Casdoor
ตอนนี้คุณมีแอปพลิเคชันแล้ว แต่ยังไม่มีผู้ใช้ นั่นหมายความว่าคุณต้องสร้างผู้ใช้และกำหนดบทบาทให้กับพวกเขา
ไปที่หน้า "Users" และคลิกที่ "Add user" ที่มุมขวาบน เมื่อคลิกแล้วจะเปิดหน้าใหม่ที่คุณสามารถเพิ่มผู้ใช้ใหม่
บันทึกผู้ใช้หลังจากเพิ่มชื่อผู้ใช้และเพิ่มองค์กร Hasura (รายละเอียดอื่นๆ เป็นทางเลือก)
ตอนนี้คุณต้องตั้งค่ารหัสผ่านสำหรับผู้ใช้ของคุณ, ซึ่งคุณสามารถทำได้โดยคลิกที่ "manage your password"
เลือกรหัสผ่านสำหรับผู้ใช้ของคุณและยืนยันมัน
สร้างแอปพลิเคชัน Hasura
เริ่ม Hasura โดยใช้ Docker หรือ Hasura Cloud
ตอนนี้สร้างตาราง users
พร้อมคอลัมน์ต่อไปนี้:
id
ประเภทข้อความ (Primary Key)username
ประเภทข้อความ
ดูรูปภาพด้านล่างเพื่ออ้างอิง
ขั้นตอนต่อไปคือการสร้างบทบาท user
สำหรับแอป ผู้ใช้ควรจะสามารถเห็นเฉพาะบันทึกของตัวเอง แต่ไม่ใช่บันทึกของคนอื่น
ตั้งค่าบทบาท user
ตามที่แสดงในรูปภาพด้านล่าง For more information, read about configuring permission rules in Hasura.
ด้วยวิธีนี้, ผู้ใช้ไม่สามารถอ่านบันทึกของคนอื่นได้ พวกเขาสามารถเข้าถึงข้อมูลของตัวเองเท่านั้น
สำหรับวัตถุประสงค์ในการทดสอบ, เพิ่มผู้ใช้ทดลอง นี่เป็นเพื่อให้แน่ใจว่าเมื่อคุณใช้โทเค็น JWT, คุณจะเห็นเฉพาะรายละเอียดของผู้ใช้ของคุณเองและไม่ใช่รายละเอียดของผู้ใช้อื่น
ตอนนี้คุณต้องตั้งค่า 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
เรียกคืนโทเค็น 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 ก่อนหน้านี้
คลิกที่ "เข้าสู่ระบบ"
กลับไปที่หน้า Casdoor/Token
ค้นหาชื่อผู้ใช้ที่คุณได้ใส่ไว้ก่อนหน้านี้ แล้วคลิกที่ "แก้ไข"
คัดลอก Access Token
ตอนนี้คุณสามารถใช้ access token เพื่อทำการร้องขอที่ผ่านการตรวจสอบสิทธิ์ Hasura ส่งคืนข้อมูลผู้ใช้ที่เหมาะสมแทนที่จะส่งคืนข้อมูลผู้ใช้ทั้งหมดจากฐานข้อมูล