2010-03-17 54 views
2

有没有人有任何关于DotNetOpenAuth的文档以及它处理列表和黑名单的方式?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> 

我想是有它取消该请求,如果它的任何部位不是在whilelist。我目前正在运行版本2.5.49045,但计划尽快更新。

使用

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

有史以来网站挡在了白名单甚至是那些。

回答

4

处理该白名单和黑名单是像这样的逻辑:

DotNetOpenId/DotNetOpenAuth已经拥有的一些安全和不安全的主机名的一些直觉。所以它会阻止一些并允许其他人在你没有设置这些列表中的任何东西。这些列表将覆盖此行为。

  1. DNOA遇到隐式禁止的主机名。拒绝 - 除非它在白名单上,在这种情况下立即通过。
  2. 否则的主机名称看起来安全,但如果它在黑名单上,拒绝。

这是上了黑名单的主机会(几乎)从来没有得到过(唯一的例外是,如果它看起来不安全反正这是在白名单)。

如果你想黑名单一切,除了一组特定的主机,我认为最好的办法是只使用黑名单,并做了regex "not" match

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

这似乎有点令人费解。但它可以在DotNetOpenId/DotNetOpenAuth的当前版本中使用。并且,未来,I'll get this fixed将更加明显。

+0

嗯我试图没有运气 <添加名称= “(?www.nanaimo.ca | nanaimo.ca | secretnanaimo.com | www.secretnanaimo.com)”/> <添加名称= “www.nanaimo.ca”/> <添加名称= “nanaimo.ca”/> <添加名称= “secretnanaimo.com”/> <添加名称基本上我们允许从任何openID登录,但因为我们的用户没有openID帐户,我们让我们创建一个for内部使用。我们不能成为一个完全开放的提供者。 – Jeff 2010-03-19 17:08:16

+0

对不起...我想用NOT运算符的正则表达式技能并不好。但是我仍然认为这个想法会起作用,如果有人能够提出正则表达式来做正确的匹配。 – 2010-03-20 04:47:05

1

如果你想过滤允许登录的用户的供应商,这可能不是最好的方法,因为它会破坏从委托到你的意思是信任的OP其他域委派标识符。

要在OP端点上进行筛选,请将OpenIdRelyingParty.EndpointFilter属性设置为仅针对您喜欢的端点返回true的函数,对于那些您不喜欢的端点则返回false。