У меня есть веб-служба в Azure, которую нельзя вызывать через конечную точку azurewebsites.net
, а только через конечную точку нашей компании, api.ourcompany.net
(не настоящее доменное имя).
Я защитил веб-службу, добавив IP-адрес Azure APIM в белый список в файле web.config, например (фактический IP-адрес не показан):
<ipSecurity allowUnlisted="false" denyAction="Unauthorized">
<!--This is for api.ourcompany.net -->
<add allowed="true" ipAddress=“aaa.bbb.ccc.ddd” subnetMask="255.255.255.0"/>
</ipSecurity>
Это прекрасно работает.
Услуга вызывается приложением для iPad. Приложение должно предоставить маркер Bearer
в заголовке Authorization
. Токен - это токен OAuth / JWT, полученный при входе пользователя на страницу входа нашей компании в приложении.
Иногда это работает нормально, а в других случаях выдает ошибку 401 Unauthorized. Я уверен, что токен действителен во всех случаях и что приложение отправляет его правильно.
Насколько я могу судить по устранению неполадок, токен работает, когда пользователь подключен к корпоративной сети Wi-Fi или использует мобильное устройство с LTE. Он не работает, когда пользователь подключен к другой сети Wi-Fi. Также кажется, что он ведет себя хаотично при переключении сетей.
Я отключил белый список, и проблема, похоже, исчезла.
У меня вопрос: как я могу внести в белый список или иным образом защитить свой сервис при использовании Bearer
токенов?