authentication - 多提供商身份验证通俗术语

标签 authentication

我试图了解库 OmniAuth 的作用,所以首先我想看看我是否正确理解“多提供商身份验证”。这是否仅仅意味着您的应用程序可以使用 facebook 或 google 作为不同类型的提供商来验证您作为用户的身份?因此,您可以通过提供您的 facebook id/pw 或您的 google id/pw 来登录您的应用程序,并且两者都会将您带到应用程序下的同一个帐户?

最佳答案

我知道有点晚了,但是,是的,你是对的。 OmniAuth旨在为您的用户提供更多选项,以便通过利用其他身份验证提供商来注册和验证自己的身份。在简单的情况下,该过程可以这样描述:

  1. 您在提供商网站上注册您的应用程序。所以他们知道你是谁。他们通常需要一个重定向网址,稍后他们会将身份验证响应发送回此处。
  2. 您会获得 app_id 和 app_secret。
  3. 当用户点击“使用...登录”时,会将他们带到他们的身份验证网址(该链接通常将您的 app_id 和重定向网址作为参数)
  4. 用户说,好吧,我授权这个应用程序做这些事情。提供商向您发回授权码。
  5. 现在您的应用可以放心地与提供商交谈。嘿提供商,我是这个应用程序(显示app_id和app_secret)并且该用户已授权我(显示授权码)。提供商现在向您发送回成功的身份验证数据(其中包含 token 、uid 和其他信息)
  6. 在服务器端流程中,您的应用可以检查 uid查看是否与系统中的任何用户匹配(假设您有一个链接到 auth_providersuser 表)。如果是,则让该用户登录,如果没有,则让该用户登录。

大多数时候,您希望用户仅使用一个身份验证提供商(Facebook 或 Google,或其他)。使用两者可能会产生 2 个独立的帐户。当然,您可以找到一种方法来解决这个问题,例如检测电子邮件是否从 auth 返回。数据已经被使用,但这并不可靠,因为只有用户使用同一电子邮件注册 Google 和 Facebook 时它才有效。如果您想让用户同时使用多个提供商登录,则需要您找到解决方案来消除重复数据。

关于authentication - 多提供商身份验证通俗术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46261290/

相关文章:

cakephp - 为什么在运行 Controller 测试时从不调用 isAuthorized()?

angularjs - 我应该在哪里将 Bearer token 注入(inject) AngularJS 中的 $http?

authentication - 将 JAAS 用于具有 Spring 安全性的 LDAP 密码

Javamail : Authenticate as admin user, 授权为其他用户

java - SecurityContextHolder 不是一个 Bean 吗?

jQuery HTTP 身份验证

php - CakePHP 3 - 多字段身份验证登录

javascript - 使用 ReasonPhrase 处理 401

c++ - Windows模拟的奇怪行为

PHP如何选择特定的SQL单元格并存储在变量中