Тенсент Клауд
Casdoor як SAML IdP у Тенсент Клауд
Цей посібник покаже вам, як налаштувати Casdoor та Тенсент Клауд, щоб додати Casdoor як SAML IdP у Тенсент Клауд.
Скопіювати метадані Saml
У Casdoor додайте сертифікат типу X.509 з криптоалгоритмом RSA.
Потім скопіюйте SamlMetadata у Casdoor.
Додавання SAML IdP у Тенсент Клауд
Увійдіть до Тенсент Клауд та перейдіть до інтерфейсу управління доступом.
Створіть нового Постачальника ідентичності та завантажте раніше скопійовані метадані saml до Тенсент Клауд.
Потім створіть нову РОЛЬ та виберіть раніше Постачальника ідентичності як постачальника idp.
Налаштування SAML додатку у Casdoor
На сторінці редагування додатку виберіть сертифікат, який ви щойно створили. Додайте доменне ім'я додатку Тенсент Клауд, яке ви будете використовувати, у 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} на ідентифікатор вашого облікового запису Тенсент Клауд, який можна переглянути в Інформація про обліковий запис - Консоль.
- Замініть {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 дозволить нам протестувати вхід. ми надаємо демо цього процесу.