¿Debo crear un par de claves por cliente como proveedor de servicios en SAML?

3

Esto es más o menos lo contrario de lo que se pregunta en esta pregunta .

Recientemente agregué SSO con SAML a una aplicación web SaaS que hace que dicha aplicación sea el Proveedor de servicios (SP). Esto se hace para que los clientes (empresas) puedan usar su Proveedor de Identidad (IdP) existente, de modo que los usuarios (los empleados de las empresas) no tengan que mantener credenciales en nuestra aplicación web, sino que simplemente puedan continuar usando sus cuentas locales existentes.

En SAML, el SP envía una solicitud de autenticación al IdP que responde con una afirmación que proporciona información de autenticación sobre el usuario que desea iniciar sesión. Para que ambas partes (SP e IdP) se aseguren de esa solicitud y respuesta no son fabricados por un golpeador de alambre, están firmados con una clave privada. El certificado utilizado para verificar las firmas de las solicitudes y respuestas se intercambió de antemano como parte del intercambio de metadatos SAML que se realiza manualmente por los administradores de las partes involucradas.

La pregunta es: ¿Hay desventajas significativas para la seguridad de este sistema si utilizo el mismo par de claves públicas / privadas para todos los clientes o es recomendable pasar por los aros de crear un par de claves separado para cada uno? cliente individual?

Estoy preguntando explícitamente sobre la seguridad de este problema. Sé que si tengo que intercambiar la clave debido a un problema de seguridad, todos los clientes deberán actualizar su IdP para incorporar el nuevo certificado. Todavía no me he decidido, pero me inclino a pensar que este es un riesgo aceptable. Esas claves serían almacenadas una junto a la otra; una violación de cualquier descripción requeriría nuevas claves para todos los clientes de todos modos.

    
pregunta musiKk 21.04.2015 - 13:12
fuente

2 respuestas

3

La mejor práctica es que cada IDP y cada SP tienen su propio par de claves. Más fácil si necesita emitir un nuevo certificado para uno de ellos y evita que uno de ellos se haga pasar por otro, etc.

Pero estos son los pares de claves para el IDP y su aplicación web. Usted está preguntando si los clientes necesitan claves diferentes. Si realmente es una pregunta, si el usuario final debería tener claves separadas, la respuesta es definitivamente sí. De la misma manera que deberían tener diferentes contraseñas.

    
respondido por el Stefan Rasmusson 21.04.2015 - 14:05
fuente
1

Si bien he visto algunos SP que firman AuthnRequests con claves únicas, esto no dura mucho ya que comienzan a escalarse. Por lo general, determinan que administrar todas esas claves privadas es un dolor grave a medida que crecen, y luego cambian a usar una sola clave privada para firmarlas. No hay nada de malo en esto: firmar el AuthnRequest prueba que provino del titular de la clave privada, y puede ser validado por cualquiera que tenga la clave pública. Como ejemplo, puede obtener el certificado que utiliza Salesforce para firmar sus solicitudes directamente desde aquí .

En muchos casos, los SP grandes (como Salesforce) también tienen la responsabilidad de mantener el certificado que el IdP usa para firmar sus respuestas en el IdP también. Como IdP, inicia sesión en la interfaz del administrador en el SP y carga su clave pública. Si dejas que caduque, ese es tu problema, no el de ellos, y el proceso se escalará.

    
respondido por el Andrew K. 22.04.2015 - 13:49
fuente

Lea otras preguntas en las etiquetas