Como garantir que minha API REST responda apenas a solicitações geradas por clientes confiáveis, no meu caso, meus próprios aplicativos móveis? Quero impedir que solicitações indesejadas venham de outras fontes. Não quero que os usuários preencham uma chave serial ou o que seja, isso deve acontecer nos bastidores, na instalação e sem a necessidade de interação do usuário.
Até onde eu sei, o HTTPS é apenas para validar o servidor com o qual você está se comunicando e quem ele diz que é. Claro que vou usar HTTPS para criptografar os dados.
Existe uma maneira de conseguir isso?
Atualização: o usuário pode executar ações somente leitura, que não exigem que o usuário esteja conectado, mas também pode executar ações de gravação, que exigem que o usuário esteja conectado (Autenticação por token de acesso). Nos dois casos, quero que a API responda a solicitações provenientes apenas de aplicativos móveis confiáveis.
A API também será usada para registrar uma nova conta através do aplicativo móvel.
Atualização 2: Parece que existem várias respostas para isso, mas sinceramente não sei qual sinalizar como resposta. Alguns dizem que isso pode ser feito, outros dizem que não.