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

Casdoor Public API

ส่วนหน้าเว็บ UI ของ Casdoor เป็น SPA (Single-Page Application) ที่พัฒนาด้วย React. ส่วนหน้า React ใช้งาน RESTful API ของ Casdoor ที่เปิดเผยโดยโค้ดด้านหลังที่เขียนด้วย Go. RESTful API นี้เรียกว่า Casdoor Public API. ในคำอื่น ๆ, ด้วยการเรียก HTTP, คุณสามารถทำทุกอย่างได้เหมือนกับที่ส่วนหน้าเว็บของ Casdoor ทำเอง. ไม่มีข้อจำกัดอื่น ๆ. API นี้สามารถใช้งานได้โดย:

  • ส่วนหน้าของ Casdoor
  • SDK ของลูกค้า Casdoor (เช่น, casdoor-go-sdk)
  • โค้ดที่ปรับแต่งเองจากด้านแอปพลิเคชัน

ข้อมูลอ้างอิงเต็มรูปแบบสำหรับ Casdoor Public API สามารถดูได้ที่ Swagger: https://door.casdoor.com/swagger. เอกสาร Swagger นี้ถูกสร้างขึ้นโดยอัตโนมัติโดยใช้เครื่องมือ Bee ของ Beego. หากคุณต้องการสร้างเอกสาร Swagger ด้วยตัวเอง, ดูที่: วิธีการสร้างไฟล์ swagger

วิธีการตรวจสอบสิทธิ์กับ Casdoor Public API

1. โดย Access token

เราสามารถใช้ access token ที่ได้รับสำหรับผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์เพื่อเรียก Casdoor Public API ในฐานะผู้ใช้นั้นเอง.

วิธีการได้รับ access token?

แอปพลิเคชันสามารถได้รับ access token สำหรับผู้ใช้ Casdoor ที่สิ้นสุดกระบวนการเข้าสู่ระบบ OAuth (หรือได้รับโทเค็นโดยรหัสและสถานะ). สิทธิ์สำหรับการเรียก API จะเหมือนกับผู้ใช้.

ตัวอย่างด้านล่างแสดงวิธีการเรียกฟังก์ชัน GetOAuthToken() ใน Go ผ่าน casdoor-go-sdk.

func (c *ApiController) Signin() {
code := c.Input().Get("code")
state := c.Input().Get("state")

token, err := casdoorsdk.GetOAuthToken(code, state)
if err != nil {
c.ResponseError(err.Error())
return
}

claims, err := casdoorsdk.ParseJwtToken(token.AccessToken)
if err != nil {
c.ResponseError(err.Error())
return
}

if !claims.IsAdmin {
claims.Type = "chat-user"
}

err = c.addInitialChat(&claims.User)
if err != nil {
c.ResponseError(err.Error())
return
}

claims.AccessToken = token.AccessToken
c.SetSessionClaims(claims)

c.ResponseOk(claims)
}

Access token ที่ได้รับอนุญาตทั้งหมดยังสามารถเข้าถึงได้ผ่านส่วนหน้าเว็บ UI โดยผู้ใช้ที่เป็นแอดมินในหน้า Tokens. ตัวอย่างเช่น, เยี่ยมชม: https://door.casdoor.com/tokens สำหรับเว็บไซต์ตัวอย่าง.

วิธีการตรวจสอบสิทธิ์?

  1. พารามิเตอร์ HTTP GET, รูปแบบ URL คือ:

    /page?access_token=<The access token>

    ตัวอย่างเว็บไซต์ตัวอย่าง: https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs

  2. โทเค็น Bearer ของ HTTP, รูปแบบส่วนหัว HTTP คือ:

    Authorization: Bearer <The access token>

2. โดย Client ID และ Client secret

วิธีการได้รับ client ID และ secret?

หน้าแก้ไขแอปพลิเคชัน (เช่น, https://door.casdoor.com/applications/casbin/app-vue-python-example) จะแสดง client ID และ secret สำหรับแอปพลิเคชัน. การตรวจสอบสิทธิ์นี้มีประโยชน์เมื่อคุณต้องการเรียก API ในฐานะ "เครื่อง", "แอปพลิเคชัน" หรือ "บริการ" แทนที่จะเป็นผู้ใช้. สิทธิ์สำหรับการเรียก API จะเหมือนกับแอปพลิเคชัน (หรือแอดมินขององค์กร).

ตัวอย่างด้านล่างแสดงวิธีการเรียกฟังก์ชัน GetOAuthToken() ใน Go ผ่าน casdoor-go-sdk.

วิธีการตรวจสอบสิทธิ์?

  1. พารามิเตอร์ HTTP GET, รูปแบบ URL คือ:

    /page?clientId=<The client ID>&clientSecret=<the client secret>

    ตัวอย่างเว็บไซต์ตัวอย่าง: https://door.casdoor.com/api/get-global-providers?clientId=294b09fbc17f95daf2fe&clientSecret=dd8982f7046ccba1bbd7851d5c1ece4e52bf039d

  2. HTTP Basic Authentication, รูปแบบส่วนหัว HTTP คือ:

    Authorization: Basic <The Base64 encoding of client ID and client secret joined by a single colon ":">

หากคุณไม่คุ้นเคยกับการเข้ารหัส Base64, คุณสามารถใช้ไลบรารีเพื่อทำเพราะ HTTP Basic Authentication เป็นมาตรฐานที่นิยมและได้รับการสนับสนุนจากหลายที่.

3. โดย Access key และ Access secret

เราสามารถใช้ access key และ access secret สำหรับผู้ใช้ Casdoor เพื่อเรียก Casdoor Public API ในฐานะผู้ใช้นั้นเอง. Access key และ access secret สามารถกำหนดค่าได้ในหน้าการตั้งค่าผู้ใช้โดยแอดมินหรือผู้ใช้เอง. API update-user ยังสามารถเรียกใช้เพื่ออัปเดตฟิลด์เหล่านี้ได้. สิทธิ์สำหรับการเรียก API จะเหมือนกับผู้ใช้.

วิธีการตรวจสอบสิทธิ์?

  1. พารามิเตอร์ HTTP GET, รูปแบบ URL คือ:

    /page?accessKey=<The user's access key>&accessSecret=<the user's access secret>"

ตัวอย่างเว็บไซต์ตัวอย่าง: https://door.casdoor.com/api/get-global-providers?accessKey=b86db9dc-6bd7-4997-935c-af480dd2c796/admin&accessSecret=79911517-fc36-4093-b115-65a9741f6b14

4. โดย username และ password

คำเตือน

วิธีการตรวจสอบสิทธิ์นี้ไม่ปลอดภัยและเก็บไว้ที่นี่เพื่อเข้ากันได้หรือเพื่อวัตถุประสงค์ในการสาธิตเท่านั้น. เราแนะนำให้ใช้วิธีการตรวจสอบสิทธิ์สามวิธีก่อนหน้านี้แทน.

จะเกิดอะไรขึ้น?

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

เราสามารถใช้ username และ password สำหรับผู้ใช้ Casdoor เพื่อเรียก Casdoor Public API ในฐานะผู้ใช้นั้นเอง. username มีรูปแบบเป็น <ชื่อองค์กรของผู้ใช้>/<ชื่อผู้ใช้>. สิทธิ์สำหรับการเรียก API จะเหมือนกับผู้ใช้.

วิธีการตรวจสอบสิทธิ์?

  1. พารามิเตอร์ HTTP GET, รูปแบบ URL คือ:

    /page?username=<The user's organization name>/<The user name>&password=<the user's password>"

ตัวอย่างเว็บไซต์ตัวอย่าง: https://door.casdoor.com/api/get-global-providers?username=built-in/admin&password=123