Almacene el certificado IDP de arriba en /tmp/idpcert.pem
el contenido debería verse así:
root@zimbra10:~# gato /tmp/idpcert.pemn-----INICIAR CERTIFICADO-----nMIIDdDCCAlygAwIBAgIGAYXonEdwMA0GCSqGSIb3DQEBCwUAMHsxFDASBgNVBAoTnC0dvb2dsZSBJbmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHnb29nbGUxGDAWBgNVBAsTD0dvb2dsZSBGb3IgV29yazELMAkGA1UEBhMCVVMxEzARnBgNVBAgTCkNhbGlmb3JuaWEwHhcNMjMwMTI1MTEwNzEzWhcNMjgwMTI0MTEwNzEznWjB7MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEWMBQGA1UEBxMNTW91bnRhaW4gVmllndzEPMA0GA1UEAxMGR29vZ2xlMRgwFgYDVQQLEw9Hb29nbGUgRm9yIFdvcmsxCzAJnBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFnAAOCAQ8AMIIBCgKCAQEAmUcDm3Sg4DkoYDeBW6tEsb/tTTeRPl4Kz3M3cowNfBDynPSeyCKHocwMQjozFtvTde6FIhpBfT8DUd+4PHvUjn+aPleSWzQgtxgJMLeMrQHmMnhJ3qSprWz4mPejtSEouqmcol3KLzC+/oWcKXDVPL7e8p3L2KZ/rX57TQut0B5bqcnZe4XgNS+Sz8Qwqg0lToQqfXBUMey0Z8ZamJsP4M6U4b+z/KDLhq3c4uTsMee1khEnIU1iQlzDhncgBP69vgt+LpfuqjgK4/gESdhoAHeaVyDT2bDQvMr0fZLFXs64taqhn4i+rSox5L4U/SeIsw6tWjLMbSJvfPakROvdRLjLcowIDAQABMA0GCSqGSIb3DQEBnCwUAA4IBAQCB+O98rsQr4TyU7tbYjGgJWfsrqkUH1SLIVLsDclJkWwuG1l3izLvYnDnqQMvV5KC0xRFTCTCoxq0bFVISqMsfTK9q720nVTppPVycPP/yhes8jlu6qivXAnIwfo5YrdEBLFleipBZYkIsJhZGGxAtVc+rjsLE2/hRp+uCmGFDvd70QSGaTfENbXnlFFe6i9OEETzNKipuc9sD7VTiCmnVSUu8TDb8bq5T0G+BNLtKeUO+68diWgSjIbsnoXDV5DdclS29zuuiwz8RoOZOMC/E6mjGbEsteoJLi3PrYHaFal1n88lbBpfXdoGpns4rz8ECbwyxLL5Rh3TWbvgliRGfmEookn-----FIN DEL CERTIFICADO-----
Desde la línea de comando, cree las carpetas saml ejecutándolas como raíz:
mkdir /opt/zimbra/lib/ext/samlnmkdir /opt/zimbra/conf/saml/
Agregue el archivo /opt/zimbra/conf/saml/saml-config.properties
para configurar SAML en Zimbra agregue los contenidos:
# Emisornsaml_sp_entity_id=https://zimbra10.barrydegraaff.nl/service/extension/samlreceivern# Receptor de inicio de sesión para el proveedor de serviciosnsaml_acs=https://zimbra10.barrydegraaff.nl/service/extension/samlreceivern# Formato de ID de nombre para que el IDP lo use en SAMLResponsensaml_name_id_format=urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddressn# Formato de fecha para el instante de emisiónnsaml_date_format_instant=aaaa-MM-dd'T'HH:mm:ss'Z'n# Punto final de inicio de sesión del proveedor de identidad para el método de redirecciónnsaml_redirect_login_destination=https://accounts.google.com/o/saml2/idp?idpid=C01kcuisf-REPLACE_THIS_VALUEn# Punto final de inicio de sesión del proveedor de identidad para el método POSTnsaml_post_login_destination=https://accounts.google.com/o/saml2/idp?idpid=C01kcuisf-REPLACE_THIS_VALUEn# punto final de cierre de sesión del proveedor de identidad para el método de redirecciónnsaml_redirect_logout_destination=n# Punto final de cierre de sesión del proveedor de identidad para el método POSTnsaml_post_logout_destination=n# Salir de la página de redireccionamiento si somos el punto final de cierre de sesión de la página de destinonsaml_landing_logout_redirect_url=/n# Deshabilitar la verificación de ruta de audienciansaml_skip_audience_restriction=verdaderon# URL para enviar al usuario con los parámetros de consulta error_code, error_msg. Resultados predeterminados en páginas de códigos de error HTTP.nsaml_error_redirect_url=n# La codificación del documento de cierre de sesión de SAML y la codificación de parámetros del receptor de inicio de sesión de SAML.nsaml_document_encoding=ASCIIn# Establézcalo en verdadero para deshabilitar la verificación de la ruta de la audiencia.nsaml_skip_audience_restriction=falson# La ubicación de redirección para enviar al usuario si su cuenta de Zimbra no está activa.nsaml_inactive_account_redirect_urln# La ubicación de redireccionamiento para enviar al usuario si el inicio de sesión del cliente web para su cuenta de Zimbra está deshabilitado.nsaml_webclient_disabled_account_redirect_url
Asegúrese de reemplazar los valores de saml_redirect_login_destination
y saml_post_login_destination
con la URL almacenada cuando creó la aplicación en Google Workspaces.
Desde la línea de comando como usuario raíz, copie samlextn.jar y configure el certificado IDP de esta manera:
cp /opt/zimbra/extensions-network-extra/saml/samlextn.jar /opt/zimbra/lib/ext/saml/nsu zimbrancat /tmp/idpcert.pem |xargs -0 zmprov md barrydegraaff.nl zimbraMyoneloginSamlSigningCertn# zmprov mcf zimbraCsrfRefererCheckEnabled FALSOnzmprov mcf zimbraCsrfAllowedRefererHosts accounts.google.comn# nuevo desde 9.0.0 parche 25, debe configurar zimbraVirtualHostName:nzmprov md barrydegraaff.nl zimbraVirtualHostName zimbra10.barrydegraaff.nln/opt/zimbra/bin/zmlocalconfig -e zimbra_same_site_cookie="" #¡lea la siguiente sección!nreiniciar zmmailboxdctl
Restricción de cookies de SameSite y SAML
Si su IDP y Zimbra están en el mismo dominio en una implementación local. Por ejemplo, zimbra.example.com y saml-idp.example.com, puede usar la configuración de cookies de SameSite Estricta:
/opt/zimbra/bin/zmlocalconfig -e zimbra_same_site_cookie="Estricta"nreiniciar zmmailboxdctl
Si su IDP está bajo un dominio diferente en una implementación IDP de SaaS alojada. Por ejemplo, zimbra.example.com y saml.authprovider.org, probablemente deba deshabilitar la configuración de cookies de SameSite de la siguiente manera:
/opt/zimbra/bin/zmlocalconfig -e zimbra_same_site_cookie=""nreiniciar zmmailboxdctl
Iniciar sesión con SAML de prueba
Haga clic en el botón PRUEBA DE INICIO DE SESIÓN SAML. Tenga en cuenta que Google puede tardar hasta 5 minutos en cargar cualquier configuración nueva de la aplicación, por lo que si ve un error de Google, intente nuevamente un poco más tarde.
Cierre de sesión único
Google Workspaces no implementa SLO.
Crear usuarios
Sus cuentas de usuario deben crearse manualmente en Zimbra y estar disponibles en su base de datos de usuarios IDP. Es importante que el atributo de correo electrónico en su IDP esté configurado exactamente igual que el nombre de la cuenta de Zimbra. O el usuario no podrá iniciar sesión. Si no funciona, ejecute un tail -f /opt/zimbra/log/*
momento para realizar la solicitud de autenticación y profundice en el registro para averiguar cuál puede ser el problema. Palabras clave para grep: SAML, audiencia y aserción.
Propiedades configurables saml-config.properties
El samlextn.jar utiliza un archivo de propiedades ubicado en: ${zimbra_home}/conf/saml/saml-config.properties
.
Se admiten las siguientes propiedades:
LLAVE | DESCRIPCIÓN | POR DEFECTO | OPCIONAL |
---|
saml_sp_entity_id | Editor | | |
saml_acs | Receptor de inicio de sesión para el proveedor de servicios | | |
saml_redirect_login_destination | Punto final de inicio de sesión del proveedor de identidad para el método de redireccionamiento | | |
saml_redirect_logout_destination | Punto final de cierre de sesión del proveedor de identidad para el método de redireccionamiento | | |
saml_post_login_destination | Punto final de inicio de sesión del proveedor de identidad para el método POST (sin usar) | | √ |
saml_post_logout_destination | Punto final de cierre de sesión del proveedor de identidad para el método POST (sin usar) | | √ |
saml_name_id_formato | Formato de ID de nombre para que el IDP lo use en SAMLResponse | urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
| √ |
saml_date_format_instant | Formato de fecha para el instante de emisión | yyyy-MM-dd’T’HH:mm:ss’Z'
| √ |
saml_error_redirect_url | URL para enviar al usuario con error_code parámetros error_msg de consulta. Resultados predeterminados en páginas de códigos de error HTTP. | | √ |
saml_landing_logout_redirect_url | Cerrar sesión en la página de inicio de redireccionamiento si somos el último servicio de cierre de sesión. | /
| √ |
saml_document_encoding | La codificación del documento de cierre de sesión de SAML y la codificación de parámetros del receptor de inicio de sesión de SAML. | ASCII
| √ |
saml_skip_audience_restriction | Establézcalo en verdadero para deshabilitar la verificación de la ruta de la audiencia. | false
| √ |
saml_inactive_account_redirect_url | La ubicación de redireccionamiento para enviar al usuario si su cuenta de Zimbra no está activa. | /service/extension/samllogout
| √ |
depuración
Si tiene problemas, puede seguir los registros en Zimbra mientras inicia sesión.
cola -f /opt/zimbra/log/mailbox.log