التخطي إلى المحتوى الرئيسي

تينسنت كلاود

كاسدور كمزود هوية SAML في تينسنت كلاود

هذا الدليل سيوضح لك كيفية تكوين كاسدور وتينسنت كلاود لإضافة كاسدور كمزود هوية SAML في تينسنت كلاود.

نسخ بيانات Saml MetaData

في كاسدور، أضف شهادة من نوع X.509 مع خوارزمية التشفير RSA.

إضافة شهادة

ثم انسخ بيانات SamlMetadata في كاسدور.

نسخ بيانات Saml

إضافة مزود هوية SAML في تينسنت كلاود

تسجيل الدخول إلى تينسنت كلاود والدخول إلى واجهة إدارة الوصول.

تسجيل الدخول إلى إدارة الوصول

أنشئ مزود هوية جديد Identity Providers وقم برفع بيانات saml metadata التي تم نسخها مسبقًا إلى تينسنت كلاود.

Saml idp create

ثم أنشئ دورًا جديدًا ROLE واختر مزود الهوية Identity Providers الذي تم إنشاؤه مسبقًا كمزود idp.

Saml role create

تكوين تطبيق SAML في كاسدور

في صفحة تعديل التطبيق، اختر الشهادة التي أنشأتها للتو. أضف اسم النطاق لتطبيق تينسنت كلاود الذي ستستخدمه في Redirect URLs.

اختر الشهادة وأضف عناوين URL لإعادة التوجيه

في صفحة تعديل التطبيق، أدخل ACS URL وقم بتكوين Saml Attribute.

أضف عنوان ACS URL وقم بتكوين سمة Saml

معلومات التكوين لسمة Saml كالتالي:

الاسمتنسيق الاسمالقيمة
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
معلومات
  • في خاصية مصدر الدور، استبدل {AccountID}، {RoleName}، و{ProviderName} بالمحتوى التالي:
  • استبدل {AccountID} بمعرف حساب تينسنت كلاود الخاص بك، والذي يمكن عرضه في معلومات الحساب - الكونسول.
  • استبدل {RoleName} باسم الدور الذي أنشأته في تينسنت كلاود، والذي يمكن عرضه في الأدوار - الكونسول.
  • استبدل {ProviderName} باسم مزود الهوية SAML الذي أنشأته في تينسنت كلاود، والذي يمكن عرضه في مزودي الهوية - الكونسول.

يمكنك زيارة وثائق مزودي الهوية SAML في تينسنت كلاود التوثيق للحصول على معلومات أكثر تفصيلاً.

تسجيل الدخول باستخدام Casdoor SAML

خطوات تسجيل الدخول العامة لـ SAML كالتالي: المستخدم -> تينسنت كلاود (غير مسجل الدخول) -> إعادة التوجيه إلى كاسدور لتسجيل الدخول -> تينسنت كلاود (مسجل الدخول). الآن، استخدم الكود خارجيًا لمحاكاة الخطوتين الأوليين وتوليد عنوان URL يعيد التوجيه إلى كاسدور. كود العينة:

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، النقر على العنوان سيسمح لنا بتجربة تسجيل الدخول. نحن نوفر عرضًا توضيحيًا لهذه العملية.

النتيجة النهائية