oauth
traditional authentication
传统认证使用 session:
1. client 发送 username、password 给 server
2. server 查数据库,检查信息,是否正确。正确就把用户登录信息(即用户状态)写到 session 里(即服务器内存中),并将 sessionId 返回给 client。
3. client 在请求 api 时,在 cookie 中传递 sessionId。server 端根据 sessionId 获取用户登录信息,如果已认证,返回正常响应;反之,401
这种方式有个缺陷:如果做分布式服务部署,那么需要每个服务器都要同步相同的登录信息,这不是一个好的方式。所以一般 rest 微服务都要求的是 stateless,即 server 端不保存任何用户信息,请求中包含所有需要的信息。
oauth
oauth 是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
OAuth允许用户提供一个 令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth让用户可以授权