Mi escenario es este, tengo mi API web que quiero proteger de personas externas, pero quiero permitir el acceso a mis propias aplicaciones que podrían ejecutarse en Windows Forms / Android / IOS / etc ... [considerado clientes públicos].
Estoy usando el servidor de identidad 3 ( enlace de Github ) como la implementación de mi proveedor de identidad.
Mi idea inicial fue generar un ID de cliente + secreto y ponerlo (de alguna manera) en todos los clientes, pero esto se considera peligroso porque los clientes públicos no deberían tener secretos, porque con más o menos esfuerzo siempre puede tener acceso a it.
Entonces, ¿cuál es la mejor manera de proteger mi API web? Tengo el control de la API web, los clientes y el servidor de Identidad, porque son todos mis productos.