Как работают белый и черный списки DotNetOpenAuth? - PullRequest
2 голосов
/ 18 марта 2010

Есть ли у кого-нибудь документация по DotNetOpenAuth и тому, как он обрабатывает списки и черные списки?

Мой конфиг

<untrustedWebRequest>
        <blacklistHosts>
            <add name="*" />
        </blacklistHosts>

      <whitelistHosts>
        <add name="www.mysite.ca" />
        <add name="mysite.ca" />
        <add name="devel.mysite.ca" />
        <add name="devel.mysite.com" />
        <add name="mysite.com" />
        <add name="www.mysite.com" />

      </whitelistHosts>


    </untrustedWebRequest>

Я хочу, чтобы он отменил запрос, если какой-либо сайт отсутствует в списке. В настоящее время я использую версию 2.5.49045, но планирую обновить в ближайшее время.

с использованием

<blacklistHostsRegex> 
<add name=".*" />  
</blacklistHostsRegex>

заблокировал когда-либо сайт, даже те, которые находятся в белом списке.

Ответы [ 2 ]

4 голосов
/ 18 марта 2010

Логика, которая обрабатывает белый и черный список, выглядит примерно так:

DotNetOpenId / DotNetOpenAuth уже обладает некоторой интуицией в отношении некоторых безопасных и небезопасных имен хостов. Таким образом, некоторые из них будут заблокированы и разрешены другим без установки каких-либо параметров в этих списках. Списки должны переопределить это поведение.

  1. DNOA обнаруживает неявно запрещенное имя хоста. Запретить - если только он не находится в белом списке, в этом случае немедленно пропустите его.
  2. В противном случае имя хоста выглядит безопасным, но если оно находится в черном списке, откажитесь.

Хост, который находится в черном списке, (почти) никогда не сможет пройти (за исключением случаев, когда он выглядит небезопасным в любом случае И он находится в белом списке).

Если вы хотите занести в черный список все, кроме определенного набора хостов, я думаю, что вам лучше всего использовать только черный список и выполнить регулярное выражение "не", соответствующее :

<untrustedWebRequest>
    <blacklistHostsRegex>
        <add name="^(?!www.mysite.ca|www.mysite.com|devel.mysite.com)$" />
    </blacklistHostsRegex>
</untrustedWebRequest>

Это кажется немного запутанным. Но это будет работать в нынешних версиях DotNetOpenId / DotNetOpenAuth. И в будущем, Я исправлю это , чтобы оно было гораздо более очевидным.

1 голос
/ 20 марта 2010

Если вы пытаетесь отфильтровать провайдеров, которым разрешено входить в систему, это может быть не лучшим подходом, так как это приведет к отрыву делегированных идентификаторов от других доменов, которые делегируют ОП, которым вы действительно доверяете.

Чтобы отфильтровать по конечной точке OP, задайте для свойства OpenIdRelyingParty.EndpointFilter функцию, которая возвращает true только для тех конечных точек, которые вам нравятся, и false для тех, которые вам не нужны.

...