我目前正在辩论是否应该为我的某个网站使用OpenID登录。 OpenID对我来说可能比较难实现,因为我已经编写了注册和登录代码,但这只是时间考虑。与传统的网站用户帐户系统相比,使用OpenID有哪些优点和缺点。使用OpenID的优点和缺点是什么?
回答
优势
你有一个单点登录这实际上是很酷,特别是在这里和那里有很多账户的人。
openid服务器提供了有关用户的基本信息,每次都可以记录通常的基本信息。从这个意义上说,您可以将麻烦保存到您的用户。
它很好地增强了传统的用户/传递机制。有许多网站同时提供两个系统。
将诚信的信任从多方移到只有一方。目前,我不知道我注册的任何网站是否以明文形式存储了我的密码,以窃取密码并尝试在其他网站上使用密码,前提是我拥有相同的密码。
委派的技术优势。你不会被迫使用同一个提供者。你可以切换。
缺点
您还必须对那些谁不明白的新范式提供用户名/密码或他们没有一个OpenID(也许他们有它,但他们不知道) 。如果它是你想要解决的广泛的人,那么你可以把它们吓跑。
此外,我不会用它来认真对待任何事情。我不相信我的银行要求我用我的openid登录,而且还有很多电子商务网站。不重要的事情可以。
openid提供商可以跟踪用户的习惯,因为他们收到所有的认证请求。这就是我部署个人提供商的原因。
最后,据我所见,许多openid服务器以明文形式移动密码,但这是我的理解,我可能是错的。我部署了我自己的openid提供商,并且我花了很大功夫,以便通过https传输密码,即使我的openid被标记为http
我看到的主要优势,尽管不一定适用于您的情况希望保留现有的系统,是我不必担心存储密码。
太多人对所有的东西都使用相同的密码(或一小组密码),所以如果我的网站被泄露了(我希望我足够熟练以防止这种情况发生,但安全性是一个多层野兽,所以任何增加额外安全性的东西在我的书中都是很好的),那么攻击者就无法获得密码。
对于用户,他们现在可以合法地拥有一切的密码。他们使用他们信任的OpenID提供商,而不必信任任何汤姆迪克或在互联网上通过网站哈利。
以SO为例,它支持两者。我使用我的Google帐户通过OpenID登录,但我仍然需要一个帐户/用户名来链接到我的OpenID。我假设您只允许通过OpenID登录,但不允许您的用户使用您的网站作为OpenID服务器登录。
所以清理一下;您可以使用大量的登录/注销代码,您将需要它,因为唯一的区别是您通过第三方而不是您自己的数据库进行身份验证。在伪代码想象:
authenticate_from_db(String username, String password)
{
fetch username and password where username = username
if username = username and password = hash_of(password)
{
return true;
}
else
{
return false;
}
}
authenticate_from_openid(String openId_provider)
{
provider = contact_openID_provider(openID_provider)
if(provider)
{
login.username = map(returned_user, your_db)
return true
}
else
{
return false;
}
}
所以你看,主要是认证过程改变,而你自己的仍然使用。
的优点是相当清楚的:
- 允许用户通过自己的OpenID提供商的现有帐户登录。
- 敌对的OpenID提供商(?垃圾邮件)验证自己的反垃圾邮件插件等
- 其他安全:
- 现有用户可以通过自己的OpenID提供商
缺点是(我能想象)任选登录通过允许第三方验证您的用户的担忧
我想强调,支持OpenID不应该改变任何东西为您的现有用户。
OpenID用户仍然需要有一个帐户,他们只是通过第三方进行身份验证。
- 1. 使用“部分索引”的优点和缺点是什么?
- 2. 什么是使用大型CSS文件的优点和缺点?
- 3. 使用Protocol vs Inheritance的优点和缺点是什么?
- 4. 使用XML模式的优点和缺点是什么?
- 5. 使用Global.asax的优点和缺点是什么?
- 6. 使用Maven有什么优点/缺点?
- 7. 使用Autofac什么是优点和缺点
- 8. has_many和has_one,有什么优点/缺点?
- 9. GPGPU(通用GPU)开发的优点和缺点是什么?
- 10. JQuery和Glow JavaScript库的优点和缺点是什么?
- 11. WPF:使用WPF UserControl的优点/缺点是什么?
- 12. 使用Drupal最大的缺点和优势是什么?
- 13. wxPython的AGW AUI的优点和缺点是什么?
- 14. 使用服务而不是组件的优点和缺点是什么?
- 15. MSpec和SpecFlow何时使用哪个?两者的优点和缺点是什么?
- 16. 在JavaScript中匿名方法的优点和缺点是什么?
- 17. 64位/ 32位的低级优点和缺点是什么?
- 18. IDE中实时协作的优点和缺点是什么?
- 19. Link-Time Code Generation的优点和缺点是什么? (VS 2005)
- 20. 有多重遗传的优点和缺点是什么?
- 21. Cocoa框架,库和包的优点/缺点是什么?
- 22. 三重数据库的优点和缺点是什么?
- 23. 让Google为我主持jQuery的优点和缺点是什么?
- 24. 在windows上运行php的优点和缺点是什么
- 25. 咖喱函数的优点和缺点是什么
- 26. jQuery中方法链接的缺点和优点是什么?
- 27. Static class vs. Singelton - 每个人的优点和缺点是什么?
- 28. Liftweb Comet的优点和缺点是什么?
- 29. 使用git-svn有什么优缺点?
- 30. 使用Meteor-Roles有什么优点和缺点?
的确,OpenID形成了认证元素(他们是谁)。您的应用程序中的用户帐户定义了授权元素(他们可以做什么)。 – 2009-07-20 01:33:07