【问题标题】:OpendID security tips for Asp.netAsp.net 的 OpendID 安全提示
【发布时间】:2010-02-26 18:46:46
【问题描述】:

我刚开始在 Asp.net MVC 应用程序中使用 OpenID,想知道使用 OpenID 时有哪些陷阱。我问的原因是因为我在使用一些 OpenID 实现时阅读了很多警告。大多数情况下,它类似于“不要使用那个库!您只需更改 url 中的一个单词,您的网站就对任何人开放!!!!”

我很可能最终会使用 DotNetOpenAuth,但作为初学者,使用的一些 therms 似乎有点陌生。这也是我提出这个问题的原因之一,因为无知不会让我的应用程序非常安全。

由于没有一个正确答案,我希望将这个问题设为“社区 wiki”是正确的做法。如果不允许此类问题,我将立即删除。

提前致谢,

泡菜

【问题讨论】:

    标签: c# .net openid


    【解决方案1】:

    DotNetOpenAuth 不是那些“改变一个词,它就坏了”的库之一。很好用。

    就术语而言:

    • ClaimedIdentifier 是新用户名。将其视为区分大小写,并确保您的数据库在基于它查找用户记录时进行区分大小写的匹配。不要将在其他方面相同的 http 和 https URL 视为同一用户 - 它们必须被视为完全不同。
    • 用户提供的标识符 是用户在 OpenID 框中键入的文字字符串(如果有的话)。永远不要将这里的任何内容视为权威,并且不要根据它做出安全决策。等到您从响应中获得 ClaimedIdentifier 并根据它和 ProviderEndpoint 做出决定。
    • OP Endpoint(又名 Provider 端点)是 OpenID Provider 的 OpenID 端点的 URL,如果您只想信任某些 Provider,您可以对此做出决定。
    • 声明,如用户的电子邮件地址和全名,如果您请求这些属性,则可能来自提供商。但永远不要相信这是正确的,除非声明来自您信任的 OP 端点。

    【讨论】:

      【解决方案2】:

      我不能谈论现有的 .NET 项目,但我可以为初学者提供基础知识的解释。虽然有一些边缘情况和可选功能,但基本流程并不难理解。启用 OpenID 的服务提供商(“依赖方”或 RP)有效地将身份验证的密码检查功能卸载到第 3 方网站(“身份提供商”或 IdP)。此类 IdP 的(最终用户特定)URL 由最终用户指定,并且(从 RP 的角度来看)该 URL 是最终用户的“标识符”。 RP 对标识符 URL 进行服务器端调用以获取活动令牌,然后将浏览器反弹到标识符 URL。现在最终用户正在与 IdP 交互,当 IdP 满意时,它会将浏览器弹回 RP,并在查询字符串上附加一些信息以指示成功。瞧。

      由于用户可以决定由谁来验证他们的身份,他们甚至可以选择使用一些完全不同的身份验证机制的服务,例如通过电话呼叫他们,甚至要求通过连接的设备提供指纹。或者,如果他们不信任世界上的任何其他人,他们可以编写自己的 IdP 并完全控制自己的身份。

      很多时候(不是在这里),RP 实际上会在整个服务中公开标识符,例如作为最终用户的用户名。因此,使用虚 URL 或博客 URL 或比 http://superopenidprovider.com/adjad9va8ivasdlkjnq8t7 更有意义的东西是一种时尚。因此存在 IdP 委托的概念,通过它,在其主页/博客上包含指向 http://superopenidprovider.com/adjad9va8ivasdlkjnq8t7 的适当 LINK 标签的最终用户可以使用其主页/博客 URL 作为其标识符。 RP 必须了解此功能并采取适当的措施。

      高级概念

      大致来自Wikipedia。这些比安德鲁的回答更具概念性。

      • 最终用户想要向服务提供商声明其身份的人。
      • 身份 与单个最终用户相关的服务提供商特定信息。 IE。最终用户识别并希望保护的所有内容。
      • 标识符 最终用户提供的特定于最终用户的 URL,可通过该 URL 启动 OpenID 身份验证。
      • 信赖方 (RP) 使用 OpenID 来确定最终用户身份声明的真实性的服务提供商。
      • 身份提供商 (IdP) 网站,可以响应来自依赖方的 OpenID 身份验证请求,通常涉及通过 Web 表单和 cookie 与最终用户进行基于密码的质询/响应。 IdP 通常支持多个用户,因此允许最终用户通过站点注册和管理标识符。但是,个人可以托管自己的 IdP,该 IdP 仅对自己进行身份验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        • 2013-01-19
        • 2012-02-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多