2

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

2 回答 2

4

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

DotNetOpenId/DotNetOpenAuth 已经对一些安全和不安全的主机名有了一些直觉。因此,它会阻止一些并允许其他人,而无需您在这些列表中设置任何内容。列表将覆盖此行为。

  1. DNOA 遇到隐式不允许的主机名。拒绝——除非它在白名单上,在这种情况下立即让它通过。
  2. 主机名看起来很安全,但如果它在黑名单上,则拒绝。

黑名单上的主机(几乎)永远不会通过(例外情况是它看起来不安全并且它在白名单上)。

如果您想将除一组特定主机之外的所有内容列入黑名单,我认为您最好的选择是仅使用黑名单,并进行正则表达式“不”匹配

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

这似乎有点令人费解。但它适用于当前版本的 DotNetOpenId/DotNetOpenAuth。展望未来,我将把它修复为更明显的东西。

于 2010-03-18T15:02:10.307 回答
1

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

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

于 2010-03-20T04:46:27.687 回答