Вот что я бы сделал:
Поместите слой аутентификации между веб-службой и внешним миром (т.е. вместо того, чтобы сделать ваш веб-сервис общедоступным интерфейсом, сделайте слой аутентификации публичным API).
Получите слой аутентификации, чтобы затем вызывать веб-службу от имени вызывающей стороны.
Таким образом, вы можете реализовать бизнес-логику на уровне аутентификации - например, просто откажитесь от вызывающего абонента, который пытается выполнить DOS-атаку или звонит с ненадежного IP-адреса и т. д. и т. д.
Также ваш API является внутренним, так что никто не может его вызвать (вы можете реализовать дополнительную логику в веб-сервисе, чтобы гарантировать, что он обрабатывает только запросы от localhost.
Это конфигурация, которую я бы использовал. как правило, не стоит раскрывать API для публики, если только вы не хотите, чтобы люди вызывали его и, возможно, время от времени злоупотребляли им.