哪个是使用登录/密码和其他社交网络实现身份验证的更好方法?

时间:2010-12-15 11:21:17

标签: api oauth restful-authentication

我会尝试解释我的问题:

我想允许用户通过他们自己的帐户(登录/密码)或通过社交网络(Facebook首先)连接到我的api。

然后,我允许任何应用程序使用我的api,并对用户进行身份验证。

我第一次想到通过他/她的登录名/密码授权用户并返回用作下次请求的会话的令牌。

但OAuth似乎是更好的实现,除了我不知道如何做到这一点:

  • 我的一个应用程序必须通过登录/密码连接,如twitter web(如果我的用户不能登录,我必须在某处实现登录/密码验证:p)
  • 我是否还必须将我的应用程序注册到oauth系统(twitter是否将他们的网络应用程序添加到他们的oauth?)
  • 如何通过其他社交网络合并auth。具体而言,用户必须将OAuth发送到我的api,该api将授权给社交网络。

我对如何做到这一点有点失落,如果有人可以帮助我,我真的很感激!

由于

更新1 : Flickr和Lastfm似乎不使用OAuth,而是使用类似的替代身份验证系统:

  • 用户被重定向到Flickr / Lastfm
  • 用户授权自己并接受使用该应用程序
  • Flickr / Lastfm使用临时frob(用于flickr)或令牌(用于lastfm)返回回调网址
  • 应用程序必须使用临时frob / token调用提供程序(与api_key和api_sig一样),并返回会话令牌以用于下次调用。

更新2 : 事实上,StackApps是我的问题的具体案例:您可以通过他们的登录/密码系统或openId登录,并且您可以使用他们的API。

1 个答案:

答案 0 :(得分:1)

OAuth只需要让其他人在其他服务上使用您的API,即授权服务使用您的API,而中间服务的用户明确不得不通过向第三方提供用户的登录凭据来登录您的服务派对。

我认为您需要的是OpenID,跨应用程序身份验证机制。您只需要实现一个OpenID客户端,接受第三方OpenID来对用户进行身份验证,以便在他们使用您的服务API时随后识别它们。这必须补充一个普通的“本地”用户认证机制(即登录/密码输入页面)

但是,您需要OAuth才能在其他网站上使用您的API。