Web applications web应用程序的OAuth实现

Web applications web应用程序的OAuth实现,web-applications,architecture,login,oauth,Web Applications,Architecture,Login,Oauth,设置如下:我为组织构建了一个web应用程序。这些组织可以有一个用户名和密码登录到其自定义系统,也可以有多个用户名和密码,在其系统中具有不同的权限。我们一直在我们自己的数据库中存储用户名和密码,但正在考虑使用OAuth,以便用户可以通过Twitter、Facebook、GMail等登录到他们的系统。凭据(以及我们可以访问他们的个人资料、联系人等)所有用户都进入同一登录页面 我的问题是: 使用OAuth,如何让他们以正确的权限登录到正确的系统 他们是否会正常登录(使用我的web应用的凭据),然后需要

设置如下:我为组织构建了一个web应用程序。这些组织可以有一个用户名和密码登录到其自定义系统,也可以有多个用户名和密码,在其系统中具有不同的权限。我们一直在我们自己的数据库中存储用户名和密码,但正在考虑使用OAuth,以便用户可以通过Twitter、Facebook、GMail等登录到他们的系统。凭据(以及我们可以访问他们的个人资料、联系人等)所有用户都进入同一登录页面

我的问题是:

使用OAuth,如何让他们以正确的权限登录到正确的系统


他们是否会正常登录(使用我的web应用的凭据),然后需要一个位置来指定“我希望允许Twitter帐户”Example123“访问此系统”

当前数据库中的每个用户名和密码将对应于未来数据库中每个服务提供商的用户id。例如:

user_id | group_id | username | password | twitter_user_id | facebook_user_id | google_user_id
1001    | 3003     | fred     | abc123   | aaaaaaaa        | bbbbbbbb         | ccccccc
通过这种结构,您可以继续使用现有的登录机制,并允许用户将其facebook/twitter/etc帐户链接到当前登录。我假设您已经在数据库中设置了某种形式的用户id和组id,但如果没有,我认为这将是最简单的方法

有很多不同的方法可以将现有帐户链接到用户的各种服务提供商帐户-这实际上取决于您选择一个与您现有的结构非常匹配的帐户,并为您的用户提供最无缝的体验。用户可以通过oauth流将新的服务提供商链接到其帐户,这可能是:

  • 用户导航到站点上的登录屏幕
  • 用户使用其原始用户名和密码登录
  • 用户选择服务提供商(如twitter)链接到其帐户
  • 用户被重定向到twitter
  • 用户在TwitterOAuth屏幕上输入他们的twitter密码,并同意允许您的网站访问您所说需要的任何信息
  • twitter然后将用户重定向回oauth回调页面
  • 您获取返回的twitter id(以及twitter返回的任何其他信息),并将其放在针对该用户的数据库中
  • 用户现在可以在将来只使用twitter登录
一旦用户启用了一个服务提供商,他们就有两种方式访问同一个帐户


除了上述过程之外,我建议添加一个审计跟踪,以便用户可以看到他们的帐户所采取的操作。这可能取决于您的可用时间,但这可能会让您在接下来的过程中安全度过许多痛苦的客户支持时间。您可以告诉用户的信息越多,您给予他们管理这些信息的权力越大,您自己进行的调查就越少,您为用户解决问题的时间就越少。

谢谢。我将把这些表的结构稍微改变一下。我将有一个“user”表和一个“identity”表,因为可能有一个用户“User123”需要允许访问多个Twitter帐户(例如)。