1

当多个服务器用于同一站点并且请求可能会发送到同一用户的任何服务器时,应使用哪种类型的登录方法?

选项:

  1. 基于cookie的登录
  2. 基于会话的登录
  3. 基于 JWT 的登录
  4. 基于2FA的登录
4

1 回答 1

1

a) 基于 cookie 的登录

不好的选择,cookie 只是另一种类型的会话,所以请参阅会话

b) 基于会话的登录

不好的选择,只是寿命较短的 cookie(当用户关闭窗口会话被杀死时,cookie 不会)。您需要一个中心会话缓存服务器来了解某人是否经过身份验证。并且这个缓存服务器在你所有的服务器都可以访问,所以他们可以判断是否这个会话,加上如果服务器在不同的域,你需要同时为多域设置cookie(这只对子域有效,你不能设置cookie另一个顶级域,当然有解决方法,例如设置 cookie 的 api 或 javascript 从该域读取 cookie 并在该域中使用)。这种方式(cookie/session)很容易理解但是你看到中心会造成延迟,而且用javascript设置cookies或者代理cookies很繁琐

c) 基于 JWT 的登录

首选,您只需要对所有服务器使用相同的密钥,获得令牌并知道他是谁

d) 基于 2FA 的登录

这是为了安全,不是为了 apis 中的 auth,密码总是会改变,你需要另一个设备来知道当前的 pass,如果你愿意,你可以使用 2FA 来保护其他方法。我想也许你的意思是OAuth

e) OAuth

比 cookie 更好且标准化的方法,但通常此身份验证服务器只负责身份验证,并且不会在其中干预太多其他事情,因为您的 api 从用户那里获取令牌并询问身份验证服务器他是谁

于 2020-12-02T07:08:15.403 回答