2010-03-17 19 views
2

Quelqu'un at-il de la documentation sur DotNetOpenAuth et la façon dont il gère les listes et les listes noires?Comment fonctionne la liste blanche et les listes noires de DotNetOpenAuth?

Ma config

<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> 

Ce que je veux est d'avoir annuler la demande si elle est un site pas dans le whilelist. Je cours actuellement la version 2.5.49045, mais je prévois de mettre à jour bientôt.

utilisant

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

jamais bloqué le site même ceux dans la liste blanche.

Répondre

4

La logique qui traite la liste blanche et liste noire est comme ceci:

DotNetOpenId/DotNetOpenAuth a déjà une certaine intuition au sujet de certains noms d'hôte sécuritaires et non sécuritaires. Donc, il va bloquer certains et permettre aux autres sans rien mettre dans ces listes. Les listes doivent remplacer ce comportement. DNOA rencontre un nom d'hôte implicitement non autorisé

  1. Refuser - à moins que ce soit sur la liste blanche, dans ce cas, laissez-le passer immédiatement.
  2. Le nom d'hôte par ailleurs semble sûr, mais s'il est sur la liste noire, refuser.

Un hôte qui est sur la liste noire sera (presque) jamais à (l'exception étant si elle semble dangereux de toute façon ET il est sur la liste blanche).

Si vous voulez la liste noire tout sauf un ensemble spécifique d'hôtes, je pense que le mieux est d'utiliser seulement la liste noire, et faire un regex "not" match:

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

Cela semble un peu alambiquée. Mais cela fonctionnera dans les versions actuelles de DotNetOpenId/DotNetOpenAuth. Et aller de l'avant, I'll get this fixed être quelque chose de beaucoup plus évident.

+0

Hmm j'ai essayé avec pas de chance Fondamentalement, nous permettons la connexion à partir de n'importe quel openID mais parce que nos utilisateurs n'ont pas de compte openID, nous laissons ensuite en créer un pour utiliser en interne. Nous ne pouvons pas être un fournisseur totalement ouvert. – Jeff

+0

Désolé ...Je suppose que mes compétences en regex avec l'opérateur NOT ne sont pas très bonnes. Mais je pense toujours que l'idée fonctionnerait, si quelqu'un pouvait venir avec l'expression rationnelle pour faire la correspondance correcte. –

1

Si vous essayez de filtrer les fournisseurs autorisés à connecter les utilisateurs, cela peut ne pas être la meilleure approche, car cela briserait les identifiants délégués d'autres domaines qui délèguent aux OP auxquels vous voulez faire confiance.

Pour filtrer sur OP Endpoint, définissez la propriété OpenIdRelyingParty.EndpointFilter sur une fonction qui renvoie true pour les points de terminaison que vous aimez, et false pour ceux qui ne le sont pas.