Tengo dos aplicaciones B2B, una para proveedores y otra para compradores. La aplicación del proveedor es una aplicación .NET Core totalmente alojada en AWS, los usuarios se autentican en Cognito, se utiliza la puerta de enlace API, RDS, ECS, etc. La segunda aplicación es más antigua y no está alojada en AWS. La aplicación de AWS posee la API REST y la otra aplicación necesita aprovechar esa API para ciertas cosas. Me gustaría configurar la seguridad a nivel de fila en Postgres para que las consultas realizadas por los proveedores se filtren por id_proveedor y las realizadas por los compradores se filtren por id_comprador. Tengo entendido que la mejor manera de hacer RLS es usar la configuración/variables de Postgres y luego hacer que su política aproveche algo como current_setting('app.supplier_id') o current_setting('app.purchaseorder_id') para filtrar los datos. No estoy seguro de cómo unir todo esto.
La forma simple que se me ocurre es configurar un cliente de aplicación en Cognito y habilitar el tipo de concesión de credenciales de cliente, luego la segunda aplicación podría aprovechar eso para obtener un token. Cuando se realiza una solicitud a la API, un middleware verificaría el token JWT y usaría una cuenta diferente en función de si se trata de un proveedor o un comprador que accede. Luego, también establecería una app.supplier_id o app.purchaser_id en la conexión de Postgres y el RLS se encargaría del resto. Simplemente no estoy seguro de que este sea el mejor enfoque o si habría una forma más elegante.