Soy un diseñador de software (antiguo IT SysAdmin) que trata de envolver mi cabeza en torno a algunos requisitos de autenticación en un documento de especificación de API.
Digamos que el departamento de gobierno ( abc.gov
) ha creado un nuevo portal web en línea para recibir 'reportes de incidentes' de manera electrónica a través de una API RESTful JSON (Swagger) asegurada con Mutual SSL (TLS).
Varios proveedores de servicios (los llamaremos one xyz.org
) deben solicitar a sus proveedores de software que proporcionen un sistema actualizado que pueda conectarse a la API abc.gov
.
Nuestro software está basado en la nube (ASP.NET, IIS8, digamos jkl.net
). Varias organizaciones iniciarían sesión en nuestro sistema web (nombre de usuario + contraseña), luego nuestro software tendría que conectarse a abc.gov
y suplantar (a falta de una palabra mejor) xyz.org
.
abc.gov
proporciona la siguiente información junto con las especificaciones de la API:
- Los certificados de cliente deberán ser emitidos por una Autoridad de Certificación de Confianza
- Los certificados de cliente no se pueden compartir entre diferentes organizaciones.
- Este certificado de cliente solo debe compartirse con la clave pública del certificado.
- Si el mismo proveedor está enviando incidentes en nombre de múltiples proveedores de servicios, el proveedor debe usar un certificado de cliente diferente para cada proveedor de servicios.
- Cuando los certificados de cliente caduquen, los nuevos certificados de cliente deberán ser emitidos por el proveedor de servicios y proporcionados a
abc.gov
, sin las claves privadas.
Por la investigación que he realizado hasta ahora, casi sé que podemos:
- almacenar múltiples certificados,
- asigne el nombre del certificado a una organización en nuestra base de datos,
- y luego seleccione el correcto para presentar al establecer una conexión. ( enlace )
Preguntas
- En lo que no estoy seguro, ¿de dónde son estos certificados de cliente?
- ¿Qué tipo de certificado se requiere y cómo funcionaría dado que los nombres de dominio no coincidirán? (Es decir,
xyz.org
solicita un nuevo certificado, lo otorga ajkl.net
, para autenticarse conabc.gov
). - ¿El personal de TI de los proveedores de servicios concluiría que esta práctica no es segura?
Gracias de antemano, deseando aprender más sobre esto.