Saltar al contenido principal

Tencent Cloud

Casdoor como un SAML IdP en Tencent Cloud

Esta guía te mostrará cómo configurar Casdoor y Tencent Cloud para añadir Casdoor como un SAML IdP en Tencent Cloud.

Copiar Saml MetaData

En Casdoor, añade un certificado de tipo X.509 con algoritmo criptográfico RSA.

Añadir cert

Luego copia el SamlMetadata en Casdoor.

Copiar metadatos Saml

Añadiendo SAML IdP en Tencent Cloud

Inicia sesión en Tencent Cloud y entra en la interfaz de gestión de acceso.

Login Access Management

Crea un nuevo Identity Providers y sube los metadatos saml previamente copiados a Tencent Cloud.

Saml idp create

Luego crea un nuevo ROLE y selecciona los Identity Providers previos como proveedor idp.

Saml role create

Configurando la aplicación SAML en Casdoor

En la página de edición de la aplicación, selecciona el certificado que acabas de crear. Añade el nombre de dominio de la aplicación Tencent Cloud que usarás en los Redirect URLs.

Select cert and add redirect URLs

En la página de edición de la aplicación, introduce la ACS URL y configura el Saml Attribute.

Add acs url and configure saml attribute

La información de configuración para Saml Attribute es la siguiente:

NameName FormatValue
https://cloud.tencent.com/SAML/Attributes/RoleUnspecifiedqcs::cam::uin/{AccountID}:roleName/{RoleName1};qcs::cam::uin/{AccountID}:roleName/{RoleName2},qcs::cam::uin/{AccountID}:saml-provider/{ProviderName}
https://cloud.tencent.com/SAML/Attributes/RoleSessionNameUnspecifiedcasdoor
información
  • En el atributo fuente de Role, reemplaza {AccountID}, {RoleName} y {ProviderName} con el siguiente contenido:
  • Reemplaza {AccountID} con tu ID de cuenta de Tencent Cloud, que se puede ver en la Account Information - Console.
  • Reemplaza {RoleName} con el nombre del rol que creaste en Tencent Cloud, que se puede ver en la Roles - Console.
  • Reemplaza {ProviderName} con el nombre del proveedor de identidad SAML que creaste en Tencent Cloud, que se puede ver en la Identity Providers - Console.

Puedes visitar la documentación de Proveedores de Identidad SAML de Tencent Cloud para obtener más información detallada.

Iniciar sesión usando Casdoor SAML

Los pasos generales de inicio de sesión para SAML son los siguientes: Usuario -> Tencent Cloud (no logueado) -> Redirigir a Casdoor para iniciar sesión -> Tencent Cloud (logueado). Ahora, usa código externamente para simular los primeros dos pasos y generar una URL que redirige a Casdoor. Código de ejemplo:

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)
}

Una vez que ejecutamos el código y obtenemos la auth URL, hacer clic en la URL nos permitirá probar el inicio de sesión. proporcionamos una demo de este proceso.

Resultado final