DotNetOpenAuth白名单和黑名单如何运作?

时间:2010-03-17 21:40:32

标签: openid dotnetopenauth whitelist

有没有人有关于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>

在白名单中阻止了任何网站。

2 个答案:

答案 0 :(得分:4)

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

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

  1. DNOA遇到隐式禁止的主机名。拒绝 - 除非它在白名单上,在这种情况下立即让它通过。
  2. 主机名看起来是安全的,但如果它在黑名单上,则拒绝。
  3. 黑名单上的主机(几乎)将永远不会通过(例外情况是,如果它看起来不安全 AND 它在白名单上)。

    如果你想将除一组特定主机之外的所有内容列入黑名单,我认为你最好的选择就是只使用黑名单,然后进行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更加明显。

答案 1 :(得分:1)

如果您尝试过滤允许登录用户的提供商,这可能不是最好的方法,因为它会破坏委托给您确实要信任的OP的其他域的委托标识符。

要过滤OP端点,请将OpenIdRelyingParty.EndpointFilter属性设置为一个函数,该函数仅对您喜欢的那些端点返回true,对于那些不支持的端点则返回false。