首页 文章

使用第三方Oauth提供程序对API的用户进行身份验证[关闭]

提问于
浏览
11

我正在使用RESTful API将服务器端Web应用程序转换为单页JavaScript应用程序 . 目前 . 用户可以使用Facebook,Twitter,Google等或通过电子邮件和密码进行身份验证 . 如何允许在RESTful API上运行相同形式的身份验证?我猜它看起来像这样:

  • 在客户端与提供商进行身份验证 .

  • 从Oauth响应中获取一些内容并将其传递给我服务器上的API,以换取访问令牌 .

  • 使用基于令牌的身份验证进行后续API调用 .

我是在正确的轨道上吗?如果是这样:

  • 是否有一个处理多个提供商的JS库,或者每个提供者都需要包含Facebook的JS SDK?

  • 我的API应该如何生成令牌?特别是,我需要从Oauth提供商处获得什么以及如何在服务器上验证它?

2 回答

  • 7

    您可以更轻松地对服务器端的身份提供程序而不是客户端处理身份验证过程 . 因此,您的REST服务器应该支持它自己的身份验证方法(也可以是基于OAuth的),并将其传输给第三方提供商 . 所以流程看起来像这样:

    • 从客户端(JS)启动登录过程 - 调用REST auth endpoints ,指定要登录的网络(例如myserver.com/login?provider=facebook) .

    • 处理服务器端的登录过程 - 重定向到提供者登录 endpoints ,接收登录回调,处理响应(获取facebook会话令牌等) .

    • 发布您自己的用户会话(如果您正在执行OAuth,则发出令牌),并回复您的JS客户端 .

    有几个社交登录库可以帮助您,查看PHP的http://hybridauth.sourceforge.net/或Java的http://code.google.com/p/socialauth/ .

    还有一些商业解决方案可以让你的生活变得更轻松(我正在为Gigya工作,所以只有你有预算时我才能做到'm biased), but that' .

  • 3

    我建议您专门为API生成API访问密钥或使用单独的OAuth流程 . 从概念上讲,您需要将创建帐户的行为与您的服务分开,并连接远程帐户 . 你可能会把你所描述的内容拉下来,但这会令人困惑 .

    要在客户端更轻松地使用OAuth,请查看oauth.io

相关问题