我真的想了解OpenID和OAuth之间的区别吗?也许他们是两个完全不同的东西?
请注意:这是一个古老的问题,有古老的答案.大多数链接的应用程序现在都没有维护.这些天,大多数人似乎都使用django-allauth或python-social-auth.为了后人的缘故,我将保留原始问题.
至少有六个Django应用程序为Django提供OpenID身份验证:
我玩了几个.Simon Willison的django-openid给人留下了良好的印象,但由于他处于Djangoland引领潮流的最前沿,我有时难以绕过他的趋势(例如django-openid中的整个动态urlpatterns系统).更重要的是,我无法登录与Google合作.
django-authopenid给人留下了良好的印象,似乎与django-registration有很好的整合.django-socialauth和django-socialregistration支持Twitter和Facebook,这绝对是一个优势.谁知道Facebook何时以及何时开始成为OpenID提供商......?但是,socialauth似乎有一些问题.
那么,那里最好的OpenID应用程序是什么?请分享任何积极(和消极)的经验.谢谢!
好的,我有一个网站,您可以自己注册并登录.您还可以使用您的Facebook,Twitter或linkedin帐户登录.
用户只注册一个帐户很重要.所以不知何故,我想合并用户的帐户,如果他们使用不同的方法登录.解决这个问题的最佳解决方案是什么?
例如,用户使用他的Facebook帐户登录.我使用这些数据自动为他注册一个帐户.我应该发送一封包含我们网站用户名和密码的电子邮件吗?(如果Facebook的政策没有问题).我应该给他们第二个屏幕,他们可以填写用户名和密码吗?但这并不是使用您的Facebook帐户登录的理念.它应该简化您的参与程序.
用户也可以在我们的网站上注册,并在下次使用他的Twitter帐户登录时.如何将这两个帐户合并为一个?什么是最好的方式?
基本上我的问题是:我有4种不同的方式,用户成为我们网站的成员.如果用户决定使用多种方式,我如何确保所有这4种方式只创建一个帐户?什么是最好的流程,以确保它不会成为用户自己的麻烦?
编辑:
在我提出这个问题3年后,我在一系列文章中给出了答案:http://www.sitepoint.com/series/using-social-networks-as-a-login-system/
我的产品具有简单的REST API,因此产品的用户可以直接与产品功能集成,而无需使用我的Web用户界面.
最近,我一直对各种第三方感兴趣,他们将桌面客户端与API集成,以允许我的产品用户使用该第三方应用程序访问他们的数据.
我已经看到想要使用Twitter的应用程序使用Twitter托管的登录页面进行身份验证,该登录页面授予特定应用程序访问该用户数据的权限.单击"允许"或"拒绝"按钮,验证过程完成.Facebook使用与我能说的最佳机制相同的机制.
经过进一步研究,这似乎是OAuth在行动,并且看到我的API是基于.Net的,我想我应该使用DotNetOpenAuth并提供类似的机制.不幸的是,样本的文档很少(如果有的话),我在网上找到的唯一教程似乎专注于帮助您为用户提供登录机制,以便他们可以使用第三方提供商登录您的网站.
我真正想做的是让我的REST API处理我的Web应用程序的所有核心身份验证和业务逻辑,并且我的Web应用程序本质上是另一个仅通过OAuth使用API的应用程序.用户可以直接使用他们的用户名和密码在网站上进行身份验证,也可以通过第三方提供商(如MyOpenID或Facebook)进行身份验证,然后网站会以某种方式使用返回的令牌对REST API进行身份验证.

它基本上看起来我需要我的API以某种方式托管OAuth服务,但也让用户使用第三方OAuth服务.我不禁想到,我对OAuth没有足够的把握来决定我是否过于复杂化,或者我正在尝试做的事情是好事还是坏事.
有人能给我至少一个我需要采取的步骤的概述,或者我应该考虑做些什么来实现这一目标?或者指点一些教程?或者提出我的建议并告诉我,我(在架构上)这一切都是错的?
可能重复:
OpenID和OAuth之间有什么区别?
OpenID和oAuth之间的真正区别是什么?他们看起来和我一样.
我应该澄清,我打算在drupal中使用它们,如果这有任何区别的话.所以我想我受到drupal中可用的任何模块实现的约束.
我有点好奇了解OpenID身份验证的工作原理.
OpenID身份验证与站点专门为自己使用的身份验证之间有什么区别吗?
我在我的网站上实现了OpenID,但我很难找到OpenID提供者URL列表.我觉得这很容易找到,但是我已经在网上搜索过,只发现了一小撮,大多是偶然的.
是否有资源列出可用的提供商及其身份验证URL?
编辑:这是我到目前为止找到的.我没有尝试过所有这些,所以如果有任何错误,请告诉我.
StackExchange https://openid.stackexchange.com
Google https://www.google.com/accounts/o8/id - 2014年5月已弃用 - 2015年4月关闭Flickr http://www.flickr.com/username
AOL http://openid.aol.com/username
Blogspot https://www.blogspot.com/
LiveJournal http://username.livejournal.com/
Wordpress https://username.wordpress.com/
VerisignLabs https://pip.verisignlabs.com/ - 2016年9月关闭
MyOpenID https://www.myopenid.com/ - 计划于2014年2月关闭MyVidoop https://myvidoop.com/
Technorati https://technorati.com/people/technorati/username/
是否可以使用我的个人网站/博客登录使用openid的网站,并委托我的Google帐户?
好的,我在SO上搜索了这个问题,但没有好的答案.花了一些时间后,我想出了如何做到这一点.我将自己回答这个问题,作为分享它的一种方式.
我们有一个网站,登录和验证自己的网站的唯一方法是使用Facebook(这不是我的选择).第一次使用Facebook登录时,会自动为您创建一个帐户.
我们现在想为我们的网站创建一个iPhone应用程序,也为其他人创建一个公共API来使用我们的服务.
这个问题是关于如何通过app/API对我们的网站进行身份验证,并分为两部分:
从API到仅使用Facebook OAuth作为身份验证方法的网站处理REST身份验证的正确方法是什么?
我已经阅读并研究了很多关于REST API的标准身份验证方法.我们不能通过HTTPS使用Basic Auth等方法,因为没有用户凭证.像这样的东西似乎只是用于使用API验证应用程序.
目前,我认为最好的方法是在API上点击/授权终点,重定向到Facebook OAuth,然后重定向回站点并提供API的用户可以用来验证后续的"令牌"要求.
对于我们创建的官方应用程序,我们不一定需要以相同的方式使用公共API.那么与我们的网站交流并对用户进行身份验证的最佳方式是什么?
我理解(我认为)如何使用API(公共)密钥和秘密(私有)密钥验证使用我们的API的第三方应用程序.但是,当涉及到对正在使用该应用程序的用户进行身份验证时,我对如何进行此操作感到困惑,因为我们必须对用户进行身份验证的唯一方法是Facebook.
我觉得我错过了一些非常明显的东西,或者没有完全理解公共REST API应该如何工作,所以任何建议和帮助将不胜感激.
openid ×10
oauth ×4
rest ×2
api ×1
architecture ×1
delegation ×1
django ×1
facebook ×1
google-oauth ×1
python ×1
saml ×1