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.
Luego copia el SamlMetadata en Casdoor.
Añadiendo SAML IdP en Tencent Cloud
Inicia sesión en Tencent Cloud y entra en la interfaz de gestión de acceso.
Crea un nuevo Identity Providers y sube los metadatos saml previamente copiados a Tencent Cloud.
Luego crea un nuevo ROLE y selecciona los Identity Providers previos como proveedor idp.
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.
En la página de edición de la aplicación, introduce la ACS URL y configura el Saml Attribute.
La información de configuración para Saml Attribute es la siguiente:
Name | Name Format | Value |
---|---|---|
https://cloud.tencent.com/SAML/Attributes/Role | Unspecified | 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 | Unspecified | casdoor |
- 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.