登录和授权
Cookie
cookie的起源:购物车
工作机制
作用
管理登录状态-session
个性化-保存个性化设置
分析用户行为
通过第三方统计来记录你的用户画像,访问数据之类
XSS:跨站攻击(http)
XSRF 跨站请求访问 通过Refere记录来辨别
Authorization
Basic token
Bearer token
格式:Authorization: Bearer <bearer token> bearer token 的获取方式:通过 OAuth2 的授权流程
OAuth2流程
- 第三方网站向授权方网站申请第三方授权合作,拿到clientid和client secret
- 用户在使用第三方网站时,点击「通过XX(如GitHub)授权」按钮,第三方 网站将⻚面跳转到授权方网站,并传入 client id 作为自己的身份标识
- 用户点击「同意授权」按钮后,授权方网站将⻚面跳转回第三方网站,并传 入 Authorization code 作为用户认可的凭证。
- 第三方网站将Authorizationcode发送回自己的服务器
- 服务器将Authorizationcode和自己的clientsecret一并发送给授权方的 服务器,授权方服务器在验证通过后,返回 access token。OAuth 流程结束
- 在上面的过程结束之后,第三方网站的服务器(或者有时客户端也会)就可
以使用 access token 作为用户授权的令牌,向授权方网站发送请求来获取 用户信息或操作用户账户。但这已经在 OAuth 流程之外。
微信登录
- 第三方App向腾讯申请第三方授权合作,拿到clientid和clientsecret
- 用户在使用第三方App时,点击「通过微信登录」,第三方App将使用微 信 SDK 跳转到微信,并传入自己的 client id 作为自己的身份标识
- 微信通过和服务器交互,拿到第三方App的信息,并显示在界面中,然后 询问用户是否同意授权该 App 使用微信来登录
- 用户点击「使用微信登录」后,微信和服务器交互将授权信息提交,然后跳 转回第三方 App,并传入 Authorization code 作为用户认可的凭证
- 第三方App调用自己服务器的「微信登录」Api,并传入Authorization code,然后等待服务器的响应
- 服务器在收到登录请求后,拿收到的Authorizationcode去向微信的第三 方授权接口发送请求,将 Authorization code 和自己的 client secret 一起 作为参数发送,微信在验证通过后,返回 access token
- 服务器在收到accesstoken后,立即拿着accesstoken去向微信的用户信 息接口发送请求,微信验证通过后,返回用户信息
- 服务器在收到用户信息后,在自己的数据库中为用户创建一个账户,并使用 从微信服务器拿来的用户信息填入自己的数据库,以及将用户的 ID 和用户 的微信 ID 做关联
- 用户创建完成后,服务器向客户端的请求发送响应,传送回刚创建好的用户 信息
- 客户端收到服务器响应,用户登录成功
Refresh token
安全。当 access token 失窃,由于它有失效时间,因此坏人只有较短的 时间来「做坏事」;同时,由于(在标准的 OAuth2 流程中)refresh token 永远只存在与第三方服务的服务器中,因此 refresh token 几乎没有失窃的⻛险