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

เทนเซ็นต์ คลาวด์

Casdoor เป็น SAML IdP ในเทนเซ็นต์ คลาวด์

คู่มือนี้จะแสดงวิธีการตั้งค่า Casdoor และเทนเซ็นต์ คลาวด์ เพื่อเพิ่ม Casdoor เป็น SAML IdP ในเทนเซ็นต์ คลาวด์

คัดลอก Saml MetaData

ใน Casdoor, เพิ่มใบรับรองประเภท X.509 ที่ใช้งานอัลกอริทึม RSA crypto

เพิ่มใบรับรอง

จากนั้นคัดลอก SamlMetadata ใน Casdoor

คัดลอก Saml metadata

การเพิ่ม SAML IdP ในเทนเซ็นต์ คลาวด์

เข้าสู่ระบบเทนเซ็นต์ คลาวด์ และเข้าสู่หน้าจัดการการเข้าถึง

เข้าสู่ระบบจัดการการเข้าถึง

สร้าง Identity Providers ใหม่และอัปโหลด saml metadata ที่คัดลอกไว้ก่อนหน้านี้ไปยังเทนเซ็นต์ คลาวด์

Saml idp create

จากนั้นสร้าง ROLE ใหม่และเลือก Identity Providers ที่สร้างไว้ก่อนหน้านี้เป็น idp provider

Saml role create

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

ในหน้าแก้ไขแอปพลิเคชัน, เลือกใบรับรองที่คุณสร้างขึ้นเมื่อสักครู่ เพิ่มชื่อโดเมนของแอปพลิเคชันเทนเซ็นต์ คลาวด์ที่คุณจะใช้ใน Redirect URLs

เลือกใบรับรองและเพิ่ม Redirect URLs

ในหน้าแก้ไขแอปพลิเคชัน, ใส่ ACS URL และตั้งค่า Saml Attribute

เพิ่ม ACS URL และตั้งค่า saml attribute

ข้อมูลการตั้งค่าสำหรับ Saml Attribute มีดังนี้:

ชื่อรูปแบบชื่อค่า
https://cloud.tencent.com/SAML/Attributes/Roleไม่ระบุqcs::cam::uin/{AccountID}:roleName/{RoleName1};qcs::cam::uin/{AccountID}:roleName/{RoleName2},qcs::cam::uin/{AccountID}:saml-provider/{ProviderName}
https://cloud.tencent.com/SAML/Attributes/RoleSessionNameไม่ระบุcasdoor
ข้อมูล
  • ใน Role source attribute, แทนที่ {AccountID}, {RoleName}, และ {ProviderName} ด้วยเนื้อหาต่อไปนี้:
  • แทนที่ {AccountID} ด้วย ID บัญชีเทนเซ็นต์ คลาวด์ของคุณ, ซึ่งสามารถดูได้ใน ข้อมูลบัญชี - คอนโซล
  • แทนที่ {RoleName} ด้วยชื่อบทบาทที่คุณสร้างในเทนเซ็นต์ คลาวด์, ซึ่งสามารถดูได้ใน บทบาท - คอนโซล
  • แทนที่ {ProviderName} ด้วยชื่อของผู้ให้บริการ SAML identity ที่คุณสร้างในเทนเซ็นต์ คลาวด์, ซึ่งสามารถดูได้ใน Identity Providers - คอนโซล

คุณสามารถเยี่ยมชมเอกสารของผู้ให้บริการ SAML Identity ของเทนเซ็นต์ คลาวด์ได้ที่ เอกสาร เพื่อข้อมูลเพิ่มเติม

การเข้าสู่ระบบโดยใช้ Casdoor SAML

ขั้นตอนการเข้าสู่ระบบทั่วไปสำหรับ SAML มีดังนี้: ผู้ใช้ -> เทนเซ็นต์ คลาวด์ (ยังไม่ได้เข้าสู่ระบบ) -> ไปยัง Casdoor เพื่อเข้าสู่ระบบ -> เทนเซ็นต์ คลาวด์ (เข้าสู่ระบบแล้ว) ตอนนี้, ใช้โค้ดภายนอกเพื่อจำลองสองขั้นตอนแรกและสร้าง URL ที่เปลี่ยนเส้นทางไปยัง Casdoor ตัวอย่างโค้ด:

func main() {
res, err := http.Get("your casdoor application saml metadata url")
if err != nil {
panic(err)
}

rawMetadata, err := ioutil.ReadAll(res.Body)
if err != nil {
panic(err)
}

metadata := &types.EntityDescriptor{}
err = xml.Unmarshal(rawMetadata, metadata)
if err != nil {
panic(err)
}

certStore := dsig.MemoryX509CertificateStore{
Roots: []*x509.Certificate{},
}

for _, kd := range metadata.IDPSSODescriptor.KeyDescriptors {
for idx, xcert := range kd.KeyInfo.X509Data.X509Certificates {
if xcert.Data == "" {
panic(fmt.Errorf("metadata certificate(%d) must not be empty", idx))
}
certData, err := base64.StdEncoding.DecodeString(xcert.Data)
if err != nil {
panic(err)
}

idpCert, err := x509.ParseCertificate(certData)
if err != nil {
panic(err)
}

certStore.Roots = append(certStore.Roots, idpCert)
}
}

randomKeyStore := dsig.RandomKeyStoreForTest()

sp := &saml2.SAMLServiceProvider{
IdentityProviderSSOURL: metadata.IDPSSODescriptor.SingleSignOnServices[0].Location,
IdentityProviderIssuer: metadata.EntityID,
ServiceProviderIssuer: "https://cloud.tencent.com",
AssertionConsumerServiceURL: "https://cloud.tencent.com/login/saml",
SignAuthnRequests: true,
AudienceURI: "https://cloud.tencent.com",
IDPCertificateStore: &certStore,
SPKeyStore: randomKeyStore,
}

println("Visit this URL To Authenticate:")
authURL, err := sp.BuildAuthURL("")
if err != nil {
panic(err)
}

println(authURL)
}

เมื่อเราทำการรันโค้ดและได้ auth URL, การคลิกที่ URL จะช่วยให้เราทดสอบการเข้าสู่ระบบ เรามีการสาธิตกระบวนการนี้

ผลลัพธ์สุดท้าย