Перейти до основного вмісту

Тенсент Клауд

Casdoor як SAML IdP у Тенсент Клауд

Цей посібник покаже вам, як налаштувати Casdoor та Тенсент Клауд, щоб додати Casdoor як SAML IdP у Тенсент Клауд.

Скопіювати метадані Saml

У Casdoor додайте сертифікат типу X.509 з криптоалгоритмом RSA.

Додати сертифікат

Потім скопіюйте SamlMetadata у Casdoor.

Скопіювати метадані Saml

Додавання SAML IdP у Тенсент Клауд

Увійдіть до Тенсент Клауд та перейдіть до інтерфейсу управління доступом.

Вхід Управління доступом

Створіть нового Постачальника ідентичності та завантажте раніше скопійовані метадані saml до Тенсент Клауд.

Saml idp створити

Потім створіть нову РОЛЬ та виберіть раніше Постачальника ідентичності як постачальника idp.

Saml роль створити

Налаштування SAML додатку у Casdoor

На сторінці редагування додатку виберіть сертифікат, який ви щойно створили. Додайте доменне ім'я додатку Тенсент Клауд, яке ви будете використовувати, у URL-адреси перенаправлення.

Вибрати сертифікат та додати URL-адреси перенаправлення

На сторінці редагування додатку введіть ACS URL та налаштуйте Saml Attribute.

Додати acs url та налаштувати saml атрибут

Інформація про налаштування 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
інформація
  • У атрибуті джерела ролі замініть {AccountID}, {RoleName} та {ProviderName} наступним вмістом:
  • Замініть {AccountID} на ідентифікатор вашого облікового запису Тенсент Клауд, який можна переглянути в Інформація про обліковий запис - Консоль.
  • Замініть {RoleName} на ім'я ролі, яку ви створили у Тенсент Клауд, яке можна переглянути в Ролі - Консоль.
  • Замініть {ProviderName} на ім'я постачальника SAML ідентичності, якого ви створили у Тенсент Клауд, яке можна переглянути в Постачальники ідентичності - Консоль.

Ви можете відвідати документацію Тенсент Клауд SAML Постачальників ідентичності документація, щоб отримати більш детальну інформацію.

Вхід за допомогою 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)
}

Як тільки ми запустимо код та отримаємо URL авторизації, натискання на URL дозволить нам протестувати вхід. ми надаємо демо цього процесу.

Кінцевий результат