你确定不了解一下常见的认证机制吗?

84024f6c069a8f818c121eb7870f9ce6.png

点击上方蓝字关注我们

1

HTTP Basic Auth

HTTP Basic Auth 就是每次请求API时都需要提供用户的账号和密码来验证用户身份,是配合 RESTful API 使用的最简单的认证方式(服务端不保存用户状态),但由于有把账号和密码暴露给第三方客户端的风险,因此在开发对外开放的RESTful API时,尽量避免采用HTTP Basic Auth。

44fce93643f6a1ca832a2958157d2b5b.png

2

Cookie Auth

Cookie认证机制就是为一次请求认证在服务端创建一个Session对象,同时在客户端(浏览器)创建了一个Cookie对象,通过客户端发送请求时携带的Cookie对象与服务端的session对象匹配来实现状态管理。Cookie认证机制是一种传统非 RESTful API 风格的的认证方式。当关闭浏览器的时候,客户端的Cookie会被删除。也可以通过修改Cookie的到期时间使Cookie在一定时间内有效。

优点:信息存储在服务端,相对安全。实现简单,session技术属于servlet规范。

缺点:不符合 RESTful API 风格,在服务端存储了用户状态,维护session需要消耗资源。分布式环境中需要处理session共享问题。

01fe494835fe6813e18d6b4caa9385ce.png

3

OAuth

OAuth(开放授权)是一个开放的授权标准,允许用户让第三方应用访问该用户在某一web服务上存储的私密资源(如照片,视频,联系人列表),而无需将账号和密码提供给第三方应用。OAuth允许用户提供一个令牌来访问用户存放在特定服务提供者的数据,而不是使用账号和密码来访问。每一个令牌授权一个特定的第三方系统(如视频编辑网站)在特定的时段内(如接下来的2小时内)访问特定的资源(如某一相册中的视频)。这样OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。OAuth 认证机制不符合 RESTful API 风格,需要额外的认证服务器,成本高。基于OAuth的认证机制适用于个人消费者类的互联网产品,如社交类APP等应用,但是不太适合拥有自有认证权限管理的企业应用。

dc402ce1c405e754a69f6fb2c30e39b1.png

4

Token Auth

Token Auth是一种符合 RESTful API 风格的认证机制。使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。

Token Auth认证机制的流程:

1、客户端使用账号和密码向服务端发送登录请求。

2、服务端收到请求后去验证账号和密码。

3、账号和密码验证成功,服务端会签发一个Token令牌,并将这个Token令牌发送到客户端。

4、客户端收到Token令牌后会将其保存在Cookie中。

5、客户端每次向服务端请求资源时,都要携带服务端签发的Token令牌(放在请求头)。

6、服务端收到请求后会去验证客户端请求携带的Token令牌,如果Token令牌验证成功,就向客户端返回请求的数据。

Token Auth认证机制相对于Cookie Auth认证机制的好处:

1、支持跨域访问:Cookie是不允许跨域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输。

2、无状态(服务端可扩展):Token机制在服务端不需要存储session信息,因为Token令牌自身包含了所有登录用户的信息,只需要在客户端的cookie或本地介质存储用户状态信息。

3、更适用CDN:可以通过内容分发网络请求服务端的所有资料(如javascript,HTML,图片等),而服务端只要提供API即可。

4、去耦:不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在API被调用的时候,可以进行Token生成调用即可。更适用于分布式环境。

5、更适用于移动应用:当客户端是一个原生平台(iOS, Android,Windows 8等)时,Cookie是不被支持的(需要通过Cookie容器进行处理),这时采用Token认证机制就会简单得多。

6、CSRF:因为不再依赖于Cookie,所以不需要考虑对CSRF(跨站请求伪造)的防范。

7、性能:一次网络往返时间(通过数据库查询session信息)比做一次MACSHA256计算的Token验证和解析要费时得多。

8、不需要为登录页面做特殊处理:如果使用Protractor做功能测试的时候,不再需要为登录页面做特殊处理。

ed43c79409c309a1882f13178495c3e7.png

5

基于JWT的Token认证

JWT(JSON Web Token)是一个非常轻巧的规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。使用可逆的加密方式,为了服务端能解析得到客户端发送Token令牌中的用户信息。

JWT组成:一个JWT实际上就是一个字符串,它由三部分组成:

1、头部 Header:头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个JSON对象。

2、载荷 playload:存放有效信息的地方,标准中注册的声明、公共的声明、私有的声明。

3、签证 signature:签证信息,这个签证信息由三部分组成:header (base64后) 、payload (base64后)、secret。签证信息需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密。

91cbf61512a5dc9999da64f73f6d8f78.png

原文链接:

https://blog.csdn.net/qq_42141141/article/details/123600136

6544b98332768f367cfd2bb46826b9be.png

点个在看你最好看

f45b1e24ad279c3b3a8b8fb3cb359ac1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值