【问题标题】:Node Server, is a database necessary for basic authentication if using oauth?节点服务器,如果使用 oauth,基本身份验证是否需要数据库?
【发布时间】:2016-02-02 23:17:51
【问题描述】:

我正在学习 Node,目前正在使用护照进行身份验证。 假设我的服务器有 2 个页面,一个带有各种登录选项的公共主页,然后是一个只有经过身份验证才能访问的超级机密页面(可能还有更多)。

如果我只打算使用第 3 方策略,有什么理由拥有数据库吗? 我知道您显然需要一个用于本地用户的 id 并通过,但是如果服务器完全依赖 3rd 方身份验证,那么会话持久性是否足以工作?还是由于某种原因(除了日志记录)您还需要保存各种东西?

【问题讨论】:

    标签: node.js authentication oauth oauth-2.0 passport.js


    【解决方案1】:

    你能不使用数据库吗,当然……但是在这种情况下,进行身份验证有什么意义呢?您只需证明该用户拥有一个 Google 帐户,任何人都可以在几分钟内免费设置该帐户。

    如果您的内容是超级机密,那么您可能希望拥有一个有权查看内容的用户(电子邮件地址等)数据库。通过 OAuth 进行身份验证,您将获得一个访问令牌,允许您获取经过身份验证的用户电子邮件地址。然后可以根据您的用户表查找该用户是否已注册,如果您的应用强制执行此操作,请检查用户是否有权访问所请求的页面。

    OAuth 证明此人是 Google/Facebook/Twitter/Github 帐户的所有者。假设您在本地注册时验证电子邮件,您可以使用此知识根据注册时使用的电子邮件在“本地帐户”数据库中登录某人。

    【讨论】:

    • 这是否意味着没有人每次都依赖第 3 方来提供所需的信息?相反,他们得到一次,将其保存在本地,我猜想根据需要更新该信息?
    • 不完全。注册时,如果您支持 Google OAuth,您将允许某人使用他们的 Google 帐户登录。该人将被重定向到 Google 并授予您的应用程序权限以获取姓名和电子邮件地址等个人资料信息。谷歌会回复一个 ID 令牌,其中包含姓名、电子邮件是否有效等。然后,您将根据您的用户数据库验证此电子邮件。如果用户存在,您可以继续并开始会话,否则您将指导用户完成新用户注册过程,由于中的信息能够小便填充步骤
    • 一个用例是内部应用程序,用户不需要。您可以要求用户拥有指定域名的 google 帐户(例如:@myCompany.com)
    猜你喜欢
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2018-05-14
    相关资源
    最近更新 更多