Prisma Cloud Computar:SAML solicitudes y respuestas
11550
Created On 11/18/19 19:32 PM - Last Modified 03/02/23 02:42 AM
Symptom
SAML es un estándar abierto para el intercambio de datos de autenticación y autorización entre partes, en particular, entre un proveedor de identidades y un proveedor de servicios.
- ServiceProvider ( SP ) = Consola Twistlock UI
- IdentityProvider (IdP) = SiteMinder, ADFS , Okta, AzureAD, PING Federate, Shibboleth, etc.
La SAML especificación se puede encontrar aquí: http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf
En este artículo, esbozamos las solicitudes y respuestas de autenticación de SAML SAML ejemplo, dando una explicación detallada sobre qué buscar en cada uno. El objetivo es ayudar a proporcionar una guía para solucionar SAML problemas relacionados con Twistlock.
Environment
- Saas
- Autohospedado 19.11 o posterior
Resolution
Ejemplo SAML de solicitud de autenticación enviada de Twistlock a ADFS IdP
<samlp:AuthnRequest
AssertionConsumerServiceURL="https://console.lab.twistlock.com/api/v1/authenticate"
Destination="https://saml-adfs.ad.lab.twistlock.com/adfs/ls"
ID ="_56f9f278-c1b1-ed6d-ecc8-c3ce057b2a09" IssueInstant="2019-04-15T20:19:12Z"
ProtocolBinding="urn:oasis:names:tc: SAML :2.0:enlaces: " HTTP-POST Version="2.0"
xmlns:saml="urn:oasis:names:tc: SAML :2.0:assertion"
xmlns:samlp="urn:oasis:names:tc: SAML :2.0:protocol">
<saml:Issuer>pfox-twistlock</saml:Issuer>
<samlp:RequestedAuthnContext comparison="exact" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc: SAML :2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:federation:authentication:windows</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
AssertionConsumerServiceURL="https://console.lab.twistlock.com/api/v1/authenticate"
Destination="https://saml-adfs.ad.lab.twistlock.com/adfs/ls"
ID ="_56f9f278-c1b1-ed6d-ecc8-c3ce057b2a09" IssueInstant="2019-04-15T20:19:12Z"
ProtocolBinding="urn:oasis:names:tc: SAML :2.0:enlaces: " HTTP-POST Version="2.0"
xmlns:saml="urn:oasis:names:tc: SAML :2.0:assertion"
xmlns:samlp="urn:oasis:names:tc: SAML :2.0:protocol">
<saml:Issuer>pfox-twistlock</saml:Issuer>
<samlp:RequestedAuthnContext comparison="exact" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc: SAML :2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:federation:authentication:windows</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
Cosas que se pueden buscar en la aserción de AuthnRequestConsumerServiceURL
AssertionConsumerServiceURL="https://console.twistlock.com/api/v1/authenticate"
Este es el punto de conexión que el IdP utilizará para redirigir el navegador del usuario de nuevo a Twistlock. Este valor se puede controlar en la configuración Administrar SAML autenticación > > > URL "Consola". Es común establecer este valor cuando la consola Twistlock está detrás de un proxy como el router externo OpenShift o un controlador Istio Ingress. El código Twistlock agregará "/api/v1/authenticate" al valor que ponga en el campo. Si no se establece este valor, el código Twistlock generará automáticamente este valor. Este valor debe coincidir con el emisor de configuraciones Twistlock del IdP SP
<saml:Issuer>consola-twistlock</saml:Issuer>
El identificador de la consola twistlock. Cada SAML IdP debe tener un identificador único para todos los SPs. De forma predeterminada Twistlock enviará el emisor twistlock. Puede cambiar este valor en el valor Audience en la configuración de twistlock SAML console.
AuthnContextClassRef
<samlp:RequestedAuthnContext comparison="exact" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc: SAML :2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:federation:authentication:windows</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc: SAML :2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:federation:authentication:windows</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext>
Solicita que los métodos de autenticación ocurran en el IdP. urn:federation:authentication:windows es para ADFS IDP que admiten la autenticación integrada de Windows. Algunos idps no sabrán cómo procesar estos valores. Por ejemplo, CA SiteMinder se pondrá en error con una SAML respuesta de:
<StatusMessage>¡AuthnRequest with AuthnContexts no es compatible!</StatusMessage>
En este caso, deberá configurar el IdP de SiteMinder para omitir los valores AuthnContextClassRef.
Ejemplo SAML Respuesta de ADFS IdP a Twistlock
<samlp:Response Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
Destination="https://console.lab.twistlock.com/api/v1/authenticate"
ID ="_3ac05c43-11b8-4fac-9063-0b0a5f83707f" InResponseTo="_56f9f278-c1b1-ed6d-ecc8-c3ce057b2a09"
IssueInstant="2019-04-15T20:21:59.095Z" Version="2.0"
xmlns:samlp="urn:oasis:names:tc: SAML :2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://console.lab.twistlock.com/adfs/services/trust</Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI ="#_3ac05c43-11b8-4fac-9063-0b0a5f83707f">
<ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>ppj1biegltD2D701NL9Of+xDctgdChV166ja9E2DqtQ=</ds:DigestValue>
</ds:SignedInfo>
<ds:SignatureValue>Mh9dAnyo2CY0kz+cah8KVwwu7ZSWXO6ubyPOBk7CjD6CVHPfR2OFJ2S3fM695/usCWYud2CwQsdd1DVCDsnnAqifkGZiabHH38bBa9Jdv3YdWs3hoz4nqQbFesdQGV5QjL54Ip19FxFWUAxt4bKpundfP2h8OikRjkoi24QLVzSIcvuH/vkvz/DP7vF6e+YCbzu6BJDPWXf3TzvO6Og1mx4URDw2kycy83CHsB0mMJm3cfvb39DSLlnE6EvR+msUqoTWuLw==</ds:SignatureValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate></ds:X509Certificate>
</ds:X509Data>
</KeyInfo>
</ds:Signature>
<samlp:Status><samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/></samlp:Status>
<Assertion ID ="_d6029da5-a589" IssueInstant="2019-04-15T20:21:59.095Z"
Version="2.0" xmlns="urn:oasis:names:tc: SAML :2.0:assertion">
<Issuer>http://saml-adfs.ad.lab.twistlock.com/adfs/services/trust</Issuer>
<Subject>
<NameID>pfox</NameID>
<SubjectConfirmation method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData InResponseTo="_56f9f278-c1b1-ed6d-ecc8-c3ce057b2a09"
NotOnOrAfter="2019-04-15T20:26:59.095Z"
Recipient="https://console.lab.twistlock.com/api/v1/authenticate"/></SubjectConfirmation>
</Subject>
<Conditions notbefore="2019-04-15T20:21:59.095Z" notonorafter="2019-04-15T21:21:59.095Z">
<AudienceRestriction>
<Audience>console-twistlock</Audience>
</AudienceRestriction>
</Conditions>
<AttributeStatement>
<Attribute name="groups">
<AttributeValue>Domain Admins</AttributeValue>
<AttributeValue>Domain Users</AttributeValue>
<AttributeValue>TLAdmins</AttributeValue>
</Attribute>
</AttributeStatement>
<AuthnStatement AuthnInstant="2019-04-15T20:21:59.032Z"
SessionIndex="_d6029da5-a589-4559-beaf-b734f45fd452">
<AuthnContext>
<AuthnContextClassRef>urn:oasis:names:tc: SAML :2.0:ac:classes: PasswordProtectedTransport</AuthnContextClassRef>
</AuthnContext>
Destination="https://console.lab.twistlock.com/api/v1/authenticate"
ID ="_3ac05c43-11b8-4fac-9063-0b0a5f83707f" InResponseTo="_56f9f278-c1b1-ed6d-ecc8-c3ce057b2a09"
IssueInstant="2019-04-15T20:21:59.095Z" Version="2.0"
xmlns:samlp="urn:oasis:names:tc: SAML :2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">http://console.lab.twistlock.com/adfs/services/trust</Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo> <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI ="#_3ac05c43-11b8-4fac-9063-0b0a5f83707f">
<ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms> <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>ppj1biegltD2D701NL9Of+xDctgdChV166ja9E2DqtQ=</ds:DigestValue>
</ds:SignedInfo>
<ds:SignatureValue>Mh9dAnyo2CY0kz+cah8KVwwu7ZSWXO6ubyPOBk7CjD6CVHPfR2OFJ2S3fM695/usCWYud2CwQsdd1DVCDsnnAqifkGZiabHH38bBa9Jdv3YdWs3hoz4nqQbFesdQGV5QjL54Ip19FxFWUAxt4bKpundfP2h8OikRjkoi24QLVzSIcvuH/vkvz/DP7vF6e+YCbzu6BJDPWXf3TzvO6Og1mx4URDw2kycy83CHsB0mMJm3cfvb39DSLlnE6EvR+msUqoTWuLw==</ds:SignatureValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate></ds:X509Certificate>
</ds:X509Data>
</KeyInfo>
</ds:Signature>
<samlp:Status><samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/></samlp:Status>
<Assertion ID ="_d6029da5-a589" IssueInstant="2019-04-15T20:21:59.095Z"
Version="2.0" xmlns="urn:oasis:names:tc: SAML :2.0:assertion">
<Issuer>http://saml-adfs.ad.lab.twistlock.com/adfs/services/trust</Issuer>
<Subject>
<NameID>pfox</NameID>
<SubjectConfirmation method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData InResponseTo="_56f9f278-c1b1-ed6d-ecc8-c3ce057b2a09"
NotOnOrAfter="2019-04-15T20:26:59.095Z"
Recipient="https://console.lab.twistlock.com/api/v1/authenticate"/></SubjectConfirmation>
</Subject>
<Conditions notbefore="2019-04-15T20:21:59.095Z" notonorafter="2019-04-15T21:21:59.095Z">
<AudienceRestriction>
<Audience>console-twistlock</Audience>
</AudienceRestriction>
</Conditions>
<AttributeStatement>
<Attribute name="groups">
<AttributeValue>Domain Admins</AttributeValue>
<AttributeValue>Domain Users</AttributeValue>
<AttributeValue>TLAdmins</AttributeValue>
</Attribute>
</AttributeStatement>
<AuthnStatement AuthnInstant="2019-04-15T20:21:59.032Z"
SessionIndex="_d6029da5-a589-4559-beaf-b734f45fd452">
<AuthnContext>
<AuthnContextClassRef>urn:oasis:names:tc: SAML :2.0:ac:classes: PasswordProtectedTransport</AuthnContextClassRef>
</AuthnContext>
Cosas a buscar en el Emisor de Respuesta
<Issuer>http://saml-adfs.ad.lab.twistlock.com/adfs/services/trust</Issuer>
El valor del emisor del token de respuesta coincide con el valor del emisor del proveedor de identidad en la configuración de SAML ADFS IdP
ds:Signature
El SAML token de respuesta debe ser respuesta firmada o respuesta firmada + aserción El certificado de firma del IdP debe cargarse en la configuración de Twistlock para el IdP en el campo XCertificado .509 en formato Base64.
grupos
<AttributeStatement>
<Attribute name="groups">
<AttributeValue>Administradores de dominio</AttributeValue>
<AttributeValue>Usuarios de dominio</AttributeValue>
<AttributeValue>TLAdmins</AttributeValue>
</Attribute>
</AttributeStatement>
<Attribute name="groups">
<AttributeValue>Administradores de dominio</AttributeValue>
<AttributeValue>Usuarios de dominio</AttributeValue>
<AttributeValue>TLAdmins</AttributeValue>
</Attribute>
</AttributeStatement>
La asignación de grupo requiere que el SAML token debe contener la notificación de grupos. Esto puede contener una matriz de nombres de grupo y se compararán con los SAML grupos definidos en Administrar > los gruposde > de autenticación. Esto puede requerir una notificación personalizada.
NameID
<Subject>
<NameID>pfox</NameID>
<SubjectConfirmation method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData InResponseTo="_56f9f278-c1b1-ed6d"
NotOnOrAfter="2019-04-15T20:26:59.095Z"
Receptor="https://console.lab.twistlock.com/api/v1/authenticate"/></SubjectConfirmation>
</Subject>
<NameID>pfox</NameID>
<SubjectConfirmation method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData InResponseTo="_56f9f278-c1b1-ed6d"
NotOnOrAfter="2019-04-15T20:26:59.095Z"
Receptor="https://console.lab.twistlock.com/api/v1/authenticate"/></SubjectConfirmation>
</Subject>
El atributo nameid debe estar presente y coincidir con un nombre de usuario Twistlock SAML si no se utiliza la asociación de grupo.