401 Unauthorized при вызове службы Azure через APIM

У меня есть веб-служба в 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 токенов?


person Mike Taverne    schedule 29.06.2017    source источник


Ответы (1)


Оказывается, у нас есть два экземпляра APIM, и я внес в белый список только один из них. Список, который у меня был, был скопирован из проекта, развернутого 2 года назад, а еще один экземпляр APIM был добавлен в прошлом году. Удивительно, насколько сложно устранить такую ​​мелочь.

person Mike Taverne    schedule 30.06.2017