oauth - 这是一种安全的用户身份验证方法吗?如果是这样,是否可以简化以减少请求总数?
问题描述
我一直在 Koa 中进行挖掘,并且有一个似乎工作正常的设置。然后我决定 SSR 将是有益的,我正在努力创建一种简单的身份验证方法。
本质上,我正在采取的步骤是:
- 用户访问 Next.JS 服务页面。
- 用户点击“使用 facebook 登录”,然后一个请求被发送到我的 Koa 服务器 /auth/facebook
- 发生带有护照的 OAuth,并为用户生成和存储令牌(然后创建或更新)
- 生成一个非常短暂的令牌,并且用户将使用 URL 中的短暂令牌重定向到 Next.JS 应用程序。
- Next.JS 将这个短暂的令牌发送到 Koa API,并返回一个真正的访问令牌并将其存储在 cookie 中。
- 这个新的访问令牌用于对 API 的后续请求。
这感觉非常复杂,我觉得有可能完全删除短暂的令牌步骤。
根据我的阅读,将 Next.JS 用于后端 API 相关逻辑并不是一个好主意,这就是为什么身份验证发生在 Koa-API 服务器上的原因,因此需要传递一个短暂的令牌来获得真正的令牌。
我是否过于复杂了?有没有我没有看到的更简单的方法?
解决方案
经过一番摆弄后,我将其缩减为仅几个请求。
我将 Passport.js 移动到自定义 Next.JS 服务器(使用 Koa)并将回调设置为目标 Next。然后我验证每个请求的令牌,因为它现在由 Next.JS 存储,而不是我的 API 服务器,删除了 4 和 5。
推荐阅读
- repository - 如何过滤和删除自 2 年以来未更新的工件存储库
- c# - 如何仅从剃刀视图中的 List ViewModel 的 foreach 循环中获取第一项
- java - 如何使用 lambdas 正确制作多级地图?
- javascript - 选中某个复选框时,选中其他复选框
- android - 从产品构建中排除特定子模块
- excel - Excel 共享工作簿,自动/使用 vba 解决冲突或忽略
- java - 未为创建的新配置单元表创建分区文件
- php - Symfony 4获取实体的约束返回空数组
- c# - 使用 C# 使用 NSUrlSession 的 HTTP POST 多部分表单数据
- javascript - 分享到 Whatsapp 的链接不显示元标记