【问题标题】:How do DotNetOpenAuth whitelist and blacklists work?DotNetOpenAuth 白名单和黑名单如何工作?
【发布时间】:2010-03-17 21:40:32
【问题描述】:

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

阻止任何站点,甚至是白名单中的站点。

【问题讨论】:

    标签: openid dotnetopenauth whitelist


    【解决方案1】:

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

    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 会变得更加明显。

    【讨论】:

    • 嗯,我没有运气 基本上我们允许从任何 openID 登录,但是因为我们的用户没有 openID 帐户,我们让我们创建一个供内部使用。我们不能成为完全开放的提供商。
    • 对不起...我猜我使用 NOT 运算符的正则表达式技能不是那么好。但我仍然认为这个想法会奏效,如果有人能想出正则表达式来进行正确的匹配。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 2010-11-30
      • 2012-04-22
      • 2020-04-14
      相关资源
      最近更新 更多