Облачный сервис Tencent
Casdoor в качестве SAML IdP в облачном сервисе Tencent
Это руководство покажет вам, как настроить Casdoor и облачный сервис Tencent, чтобы добавить Casdoor в качестве SAML IdP в облачный сервис Tencent.
Скопировать метаданные Saml
В Casdoor добавьте сертификат типа X.509 с криптоалгоритмом RSA.
Затем скопируйте SamlMetadata в Casdoor.
Добавление SAML IdP в облачный сервис Tencent
Войдите в облачный сервис Tencent и перейдите в интерфейс управления доступом.
Создайте новый Поставщиков Удостоверений и загрузите ранее скопированные метаданные saml в облачный сервис Tencent.
Затем создайте новую РОЛЬ и выберите ранее созданных Поставщиков Удостоверений в качестве поставщика idp.
Настройка SAML приложения в Casdoor
На странице редактирования приложения выберите только что созданный сертификат. Добавьте доменное имя приложения облачного сервиса Tencent, которое вы будете использовать, в URL перенаправления.
На странице редактирования приложения введите 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 |
- В атрибуте источника роли замените {AccountID}, {RoleName} и {ProviderName} следующим содержимым:
- Замените {AccountID} на идентификатор вашего аккаунта в облачном сервисе Tencent, который можно просмотреть в Информация об аккаунте - Консоль.
- Замените {RoleName} на имя созданной вами роли в облачном сервисе Tencent, которое можно просмотреть в Роли - Консоль.
- Замените {ProviderName} на имя созданного вами поставщика удостоверений SAML в облачном сервисе Tencent, которое можно просмотреть в Поставщики Удостоверений - Консоль.
Вы можете посетить документацию поставщиков удостоверений SAML облачного сервиса Tencent документация, чтобы получить более подробную информацию.
Вход в систему с использованием Casdoor SAML
Общие шаги входа для SAML следующие: Пользователь -> Облачный сервис Tencent (не вошел в систему) -> Перенаправление в Casdoor для входа -> Облачный сервис Tencent (вошел в систему). Теперь используйте код внешне, чтобы смоделировать первые два шага и сгенерировать 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 позволит нам протестировать вход в систему. мы предоставляем демонстрацию этого процесса.