常见的认证机制的理解

1.HTTP Basic Auth

HTTP Basic Auth就是每次请求API时都提供用户的username和password。简单的说,Basic Auth是配合RESTful API使用的最简单的认证方式,只需要提供用户名和密码就可以了。目前在生成环境中被使用的越来越少,因为有将用户名密码暴露给第三方客户端的风险。在使用RESTful API上,尽量避免使用。

2.Cookie Auth

Cookie认证机制就是为一次请求在服务端创建一个Session对象,同时在客户端的浏览器中创建一个Cookie对象:通过客户端带上Cookie对象来与服务器端的session对象匹配来实现状态管理。在传统项目中用的比较多。

3.OAuth

OAuth(开放授权)是一个开放的授权标准,允许用户让第三方应用访问该用户在某一web服务上存储的私密的资源(如照片,视频),而无需将用户名密码提供给第三方应用。

OAuth允许用户提供一个令牌,而不是使用用户名和密码来访问。每一个令牌授权一个特定的第三方系统在特定的时间段内访问特定的资源。这样的话,OAuth让用户可以授权第三方网站访问他们存储在另外服务器提供者的某些特定的信息,并非所有内容。适用于个人消费这类的互联网产品,如社交类APP等应用,但是不太适合拥有自有认证权限管理的企业应用。

在这里插入图片描述

4.Token Auth

使用基于Token的身份验证方法,在服务器端不需要存储用户的登录记录。大概的流程是这样的:

1.客户端使用用户名和密码请求登录

2.服务端收到请求,去验证用户名和密码

3.验证成功之后,服务端会签发一个Token,再将其发送给客户端

4.客户端收到Token之后,将其存储起来,比如Cookie中

5.客户端每次向服务端请求资源的时候,都需要带着服务端签发的Token

6.服务端收到请求,然后去验证客户端请求里带着的Token,然后返回客户端成功或失败信息

Token机制和Cookie机制比较,其优点:

1.Token支持跨域访问,Cookie不可以,但前提是传输的用户认证信息通过HTTP头传输

2.Token无状态,Token机制在服务端不需要存储Session信息,因为自身包含了用户登录所需要的信息,只需要在客户端的cookie或本地介质存储状态信息

3.Token更使用CDN,可以通过内容分发网络请求你服务端的所有资料,而你的服务端只要提供API即可

4.去耦:不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在你的API被调用的时候,你可以进行Token生成调用即可.

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

6.更好的性能:一次网络往返时间(通过数据库查询session信息)比做一次HMACSHA256
计算 的Token验证和解析要费的时间多

7.基于标准化:API可以采用标准化的 JSON Web Token (JWT)

猜你喜欢

转载自blog.csdn.net/weixin_40826349/article/details/89189812