Это похоже на общий вопрос аутентификации. Вы можете решить это так же, как и аутентификацию пользователя. Подумайте об этом так:
Когда пользователь входит в ваше приложение, он предоставляет свои данные на клиенте, а затем он проверяется на сервере. Для того, чтобы они оставались в системе, они получают какой-то токен через сеанс Cookie, JWT или любой другой. Который затем сохраняется на клиенте и отправляется при каждом запросе на сервер для проверки их подлинности.
Выше показано, как веб-сайты могут показывать контент только для зарегистрированных пользователей. Проверяя ранее указанный токен при каждом новом запросе.
Теперь примените этот метод к вашему REST Api. Пользователь должен запросить токен (который не должен быть вашим главным паролем, а уникальным сгенерированным паролем для каждого пользователя), а затем сохранить его локально в течение X времени. Каждый раз, когда пользователь отправляет запрос в API, он отправляет этот токен, который проверяется.
Это также, как это делают обычные API. Вам понадобится токен или какой-то другой способ. Если вы показываете действительно конфиденциальную информацию, токен должен время от времени обновляться (от минут до дней, в зависимости от того, насколько конфиденциальна). Вы ведете учет действительных токенов на своем сервере. Таким образом, если какой-либо токен «украден», он будет действителен только в течение небольшого промежутка времени.