Excusez-moi @MarkAmery et Eugene, mais c'est incorrect.
Votre application js + html (client) exécutée dans le navigateur PEUT être configurée pour exclure les appels directs non autorisés à l'API comme suit:
- Première étape: configurez l'API pour exiger une authentification. Le client doit d'abord s'authentifier via le serveur (ou un autre serveur de sécurité) par exemple en demandant à l'utilisateur humain de fournir le mot de passe correct.
Avant l'authentification, les appels à l'API ne sont pas acceptés.
Lors de l'authentification, un "jeton" est renvoyé.
Après l'authentification, seuls les appels d'API avec le «jeton» d'authentification seront acceptés.
Bien sûr, à ce stade, seuls les utilisateurs autorisés qui ont le mot de passe peuvent accéder à l'API, bien que s'ils sont des programmeurs déboguant l'application, ils peuvent y accéder directement à des fins de test.
- Deuxième étape: configurez maintenant une API de sécurité supplémentaire, qui doit être appelée dans un court laps de temps après que l'application client js + html a été initialement demandée au serveur. Ce "rappel" indiquera au serveur que le client a été téléchargé avec succès. Limitez le fonctionnement de vos appels d'API REST uniquement si le client a été demandé récemment et avec succès.
Maintenant, pour utiliser votre API, ils doivent d'abord télécharger le client et l'exécuter dans un navigateur. Ce n'est qu'après avoir reçu avec succès le rappel, puis l'entrée de l'utilisateur dans un court laps de temps, que l'API acceptera les appels.
Vous n'avez donc pas à craindre qu'il s'agisse d'un utilisateur non autorisé sans informations d'identification.
(Le titre de la question, `` Comment sécuriser les appels d'API REST '', et d'après la plupart de ce que vous dites, c'est votre principale préoccupation, et non la question littérale de COMMENT votre API est appelée, mais plutôt PAR QUI, correct? )