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