我刚刚在Asp.net MVC应用程序中使用OpenID,并想知道使用OpenID时存在哪些缺陷。我问的原因是因为我在使用一些OpenID实现时读了很多警告。大多数情况下,它是“不要使用该库!您只需要在网址中更改一个单词,并且您的网站对所有人开放!!!!”
我很可能最终会使用DotNetOpenAuth,但作为初学者,使用的一些热量似乎有点异国情调。这也是我提出这个问题的原因之一,因为无知不会使我的应用程序非常安全。
由于没有一个正确的答案,我希望提出这个问题'社区维基'是正确的做法。如果不允许这类问题,我会立即将其删除。
提前致谢,
Pickels
答案 0 :(得分:1)
DotNetOpenAuth不是那些“改变一个词而且它已经坏了”的库之一。这是一个很好用的。
就术语而言:
答案 1 :(得分:1)
我不能谈论现有的.NET项目,但我可以为初学者提供基础知识的解释。虽然有一些边缘情况和可选功能,但基本流程并不难理解。支持OpenID的服务提供商(“依赖方”或RP)有效地将身份验证的密码检查功能卸载到第三方网站(“身份提供商”或IdP)。这种IdP的(最终用户特定的)URL由最终用户指定,并且(从RP的角度来看)该URL是最终用户的“标识符”。 RP对标识符URL进行服务器端调用以获取活动令牌,然后将浏览器退回到标识符URL。现在最终用户正在与IdP进行交互,当IdP满意时,它会将浏览器反弹回RP,并在查询字符串上添加一些信息以指示成功。瞧。
由于用户可以决定谁验证他们的身份,他们甚至可以选择使用一些完全不同的身份验证机制的服务,例如在手机上调用它们,甚至通过连接的设备需要指纹。或者,如果他们不信任世界上任何其他人,他们可以编制自己的IdP并完全控制他们的身份。
很多时候(不是在SO上),RP实际上会在整个服务中公开标识符,例如:作为最终用户的用户名。因此,使用虚荣URL或博客URL或比http://superopenidprovider.com/adjad9va8ivasdlkjnq8t7更有意义的东西是时髦的。因此存在IdP委派的概念,通过该委托,在其主页/博客上包括适当的LINK标签http://superopenidprovider.com/adjad9va8ivasdlkjnq8t7的最终用户可以使用其主页/博客URL作为其标识符。 RP必须了解此功能并采取适当的措施。
高级概念
大致来自Wikipedia。这些比安德鲁的答案更具概念性。