Поставщик DotNotOpenAuth белый список / черные списки хостов - PullRequest
0 голосов
/ 15 сентября 2011

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

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

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

1 Ответ

0 голосов
/ 16 сентября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...