0

设置是这样的:我有一个为组织构建的 Web 应用程序。这些组织可以有一个用户名和密码登录到他们的定制系统,或者他们可以有多个用户名和密码,在他们的系统中具有不同的权限。我们一直在我们自己的数据库中存储用户名和密码,但正在研究使用 OAuth,以便用户可以通过他们的 Twitter、Facebook、GMail 等凭据登录到他们的系统(这样我们就可以访问他们的个人资料、联系人等)所有用户都来到同一个登录页面。

我的问题是这样的:

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

他们会正常登录(使用我的网络应用程序的凭据),然后需要一个地方来指定“我想允许 Twitter 帐户“Example123”访问这个系统吗?

4

1 回答 1

0

当前数据库中的每个用户名和密码都将对应于未来数据库中每个服务提供商的用户 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 oauth 屏幕上输入他们的 twitter 密码并同意允许您的网站访问您所说的任何您需要的信息
  • 然后 twitter 将用户重定向回您的 oauth 回调页面
  • 您获取返回的 twitter id(以及 twitter 返回的任何其他信息)并将其放在您的数据库中针对该用户
  • 用户现在可以在未来仅使用 Twitter 登录

一旦用户启用了一个服务提供商,他们就可以通过两种方式访问​​同一个帐户。

除了上述过程,我建议添加一个审计跟踪,以便用户可以看到他们的帐户已采取的行动。这可能取决于您可用的时间,但它可能会为您提供许多痛苦的客户支持时间。您可以告诉用户的信息越多,赋予他们管理这些信息的权力越大,您自己进行的调查就越少,为他们解决用户问题所花费的时间就越少。

于 2012-09-14T01:55:03.430 回答