web应用认证概述

1 常见的认证方式

1.1 Http Basic Auth

每次请求都提供用户的用户名和密码。简单说 Basic Auth是配合Restful API 使用的最简单的认证方式,只需提供用户名密码即可,但是存在把用户名暴露给第三方客户端的风险,再生产环境中避免使用。

1.2 Cookie Auth

Cookie认证机制就是为一次请求认证在服务端创建一个session对象,同时在客户端创建一个cookie对象,通过客户端提交的cookie对象与服务端的session对象匹配来实现状态的管理,默认的,当我们关闭浏览器的时候,cookie会被删除,但是可以通过修改cookie的过期时间在一定时间内有效。
弊端

  • 某些移动端可能不存在cookie(比如微信小程序)
  • cookie存在跨域问题(在微服务之间端口不一样,或存在跨域问题。)

1.3 OAuth

OAuth(开放授权)是一个开放的授权标准,允许第三方应用访问在某一web服务器上存储的私密资源,而无需将用户名和密码提供给第三方软件。OAuth允许用户提供一个令牌,每一个令牌授权一个特定的第三方系统,通过这个令牌访问存在特定服务器上的资源。
在这里插入图片描述

1.4 Token Auth

Http Basic Auth的演化版本,每次请求服务端带上token标志,后台服务校验这个token是否合法,从而决定客户端是否可以访问后台资源。无状态
基于Token Auth的好处

  • 支持跨域访问:cookie不允许跨域访问,token不存在这个问题。一般将token信息设置在http请求头里
  • 无状态,服务端可自行扩展,token机制在服务端不需要存储session,因而无需解决session共享问题。
  • 更适合用CDN:跨域通过内容分发网络请求你服务端的所有资料,你的服务端只需要提供API即可
  • 去耦:不需要绑定一个特定的身份认证方案
  • 更适合原生应用:当你的客户端是一个原生平台(IOS,Android,Window8),cookie不被支持,你需要通过cookie容器解决
  • CSRF: 因为不在依赖cookie,所以不需要考虑跨站请求伪造问题。
  • 可以做到标准化,例如jwt(json web token)

2 有状态服务和无状态服务

2.1 有状态服务

有状态服务:服务端会存储请求上下文相关的数据,先后的请求可能是有关联的。例如,传统web应用中,使用session维护已登录用户的数据。客户端(浏览器)存储jsession数据,在提交请求后,找到次jsessionid 对应的session数据。虽然http是无状态的,但是借助session可以使http服务装换为有状态的。

2.2 无状态服务

无状态服务:本次请求不依赖于之前的请求,本次请求的数据全部包含在该次请求中。例如,基于token的验证方式,不需要sesession维持会话数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值