เทนเซ็นต์ คลาวด์
Casdoor เป็น SAML IdP ในเทนเซ็นต์ คลาวด์
คู่มือนี้จะแสดงวิธีการตั้งค่า Casdoor และเทนเซ็นต์ คลาวด์ เพื่อเพิ่ม Casdoor เป็น SAML IdP ในเทนเซ็นต์ คลาวด์
คัดลอก Saml MetaData
ใน Casdoor, เพิ่มใบรับรองประเภท X.509 ที่ใช้งานอัลกอริทึม RSA crypto
จากนั้นคัดลอก SamlMetadata ใน Casdoor
การเพิ่ม SAML IdP ในเทนเซ็นต์ คลาวด์
เข้าสู่ระบบเทนเซ็นต์ คลาวด์ และเข้าสู่หน้าจัดการการเข้าถึง
สร้าง Identity Providers ใหม่และอัปโหลด saml metadata ที่คัดลอกไว้ก่อนหน้านี้ไปยังเทนเซ็นต์ คลาวด์
จากนั้นสร้าง ROLE ใหม่และเลือก Identity Providers ที่สร้างไว้ก่อนหน้านี้เป็น idp provider
การตั้งค่าแอปพลิเคชัน SAML ใน Casdoor
ในหน้าแก้ไขแอปพลิเคชัน, เลือกใบรับรองที่คุณสร้างขึ้นเมื่อสักครู่ เพิ่มชื่อโดเมนของแอปพลิเคชันเทนเซ็นต์ คลาวด์ที่คุณจะใช้ใน Redirect URLs
ในหน้าแก้ไขแอปพลิเคชัน, ใส่ 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 จะช่วยให้เราทดสอบการเข้าสู่ระบบ เรามีการสาธิตกระบวนการนี้