Поставщик 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-адреса в вашем кольце.