Поставщик DotNotOpenAuth белый список / черные списки хостов

Я разрабатываю провайдера, используя DotNetOpenAuth на основании образцов. Я экспериментирую с доверяющими сторонами из белого / черного списка. Кажется, что он игнорирует занесенные в черный список узлы и пропускает проверяющую сторону. Я убедился, что UntrustedWebRequestHandler загружает хост из черного списка из файла конфигурации. Вот мой раздел конфигурации.

<dotNetOpenAuth>
  <messaging>
    <untrustedWebRequest>
      <blacklistHosts>
        <add name="localhost" />
      </blacklistHosts>
    </untrustedWebRequest>
  </messaging>
</dotNetOpenAuth>

Я также заметил, что OpenIdWebRingSsoProvider реализует белые списки вручную, а не в зависимости от UntrustedWebRequestHandler, Ли UntrustedWebRequestHandler обрабатывать только белый список и черный список при работе в качестве проверяющей стороны? Если нет, что я делаю не так?

1 ответ

Решение

Раздел unntrustedWebRequest вашей веб-конфигурации ограничивает только исходящие HTTP-запросы в зависимости от хоста или IP-адреса запроса. Вот почему его установка на провайдера OpenID (не обязательно) не блокирует проверяющие стороны, поскольку поставщики не обязаны отправлять запрос проверяющей стороне. Этот раздел.config в первую очередь защищает вас от злых интернет-серверов, которые намеренно пытаются DoS-атаки на ваш сервер. Например, если вы пишете RP, так как OpenID могут быть введены непосредственно пользователем, они могут ввести хост, который просто принимает HTTP-запросы и позволяет им зависать там, не отвечая и не закрывая соединение. Достаточно тех, и ваш сервер исчерпает ресурсы. Если вы нашли несколько серверов, делающих это с вами, вы можете занести их в черный список здесь.

Если вы действительно хотите контролировать, к каким службам подключаться (проверяющим сторонам или поставщикам), вам не следует использовать вышеуказанный метод. Как вы видели в примере OpenIdWebRingSsoProvider, вы должны фильтровать их самостоятельно, используя IAuthenticationRequest.Realm (если вы провайдер) или IAuthenticationRequest.Provider.Uri (если вы являетесь проверяющей стороной). Конечно, есть и другие способы фильтрации. Если в вашей организации имеется большое веб-кольцо единого входа, вы можете фильтровать некоторые обнаруживаемые сертификаты в удаленной службе, а не жестко кодировать URL-адреса в вашем кольце.

Другие вопросы по тегам