"常见的身份验证方式有哪些?" 常用认证机制有哪些

"常见的身份验证方式有哪些?",常用认证机制有哪些 。小编来告诉你更多相关信息 。
常用认证机制有哪些为大家分享常用认证机制有哪些的话题 , 如有不对的地方欢迎指正!
1. HTTP Basic Auth

HTTP Basic Auth: 是一种简单的登录认证方式,Web浏览器或其他客户端程序在请求时提供用户名和密码 , 通常用户名和密码会通过HTTP头传递 。
简单点说就是每次请求时都提供用户的username和password
这种方式是先把用户名、冒号、密码拼接起来,并将得出的结果字符串用Base64算法编码 。
例如 , 提供的用户名是 bill 、口令是 123456,则拼接后的结果就是 bill:123456 ,然后再将其用Base64编码,得到 YmlsbDoxMjM0NTY=
最终将Base64编码的字符串发送出去,由接收者解码得到一个由冒号分隔的用户名和口令的字符串 。
优点:
基本上所有流行的网页浏览器都支持基本认证 。
缺点:
由于用户名和密码都是Base64编码的,而Base64编码是可逆的,所以用户名和密码可以认为是明文 。
所以只有在客户端和服务器主机之间的连接是安全可信的前提下才可以使用 。
2. Cookie-Session Auth
Cookie-session:认证机制是通过浏览器带上来Cookie对象来与服务器端的session对象匹配来实现状态管理 。
第一次请求认证在服务端创建一个Session对象 , 同时在用户的浏览器端创建了一个Cookie对象;当我们关闭浏览器时,cookie会被删除 。
但可以通过修改cookie 的expire time使cookie在一定时间内有效 。
优点:
相对HTTP Basic Auth更加安全 。
缺点:
这种基于cookie-session的认证使应用本身很难得到扩展,随着不同客户端用户的增加,独立的服务器已无法承载更多的用户,而这时候基于session认证应用的问题就会暴露出来 。
3. OAuth
OAuth是一个关于授权(authorization)的开放网络标准 。允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据 。现在的版本是2.0版 。
严格来说 , OAuth2不是一个标准协议,而是一个安全的授权框架 。
它详细描述了系统中不同角色、用户、服务前端应用(比如API),以及客户端(比如网站或移动App)之间怎么实现相互认证 。
OAuth流程如下图:
"常见的身份验证方式有哪些?" 常用认证机制有哪些

文章插图
优点:
"常见的身份验证方式有哪些?",常用认证机制有哪些 。小编来告诉你更多相关信息 。
常用认证机制有哪些
  • 快速开发,代码量?。??すぷ魃?。
  • 如果API要被不同的App使用,并且每个App使用的方式也不一样,使用OAuth2是个不错的选择 。
缺点:
OAuth2是一个安全框架 , 描述了在各种不同场景下,多个应用之间的授权问题 。有海量的资料需要学习,要完全理解需要花费大量时间 。OAuth2不是一个严格的标准协议,因此在实施过程中更容易出错 。
4. Token Auth
基于token的认证鉴权机制类似于http协议 , 也是无状态的 。
这种方式不需要在服务端去保留用户的认证信息或者会话信息 。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利
token必须要在每次请求时传递给服务端 , 它应该保存在请求头中
Token Auth 流程如下图:
"常见的身份验证方式有哪些?" 常用认证机制有哪些

文章插图
优点:
  • 支持跨域访问
  • Token机制在服务端不需要存储session信息:Token 自身包含了所有登录用户的信息 , 只需要在客户端的cookie或本地介质存储状态信息
  • 去耦,不需要绑定到一个特定的身份验证方案 。Token可以在任何地方生成,只要在你的API被调用的时候,你可以进行Token生成调用即可
  • 更适用于移动应用:Cookie是不被客户端(iOS, Android,Windows 8等)支持的 。
  • 基于标准化:API可以采用标准化的 JSON Web Token (JWT) 。这个标准已经存在多个后端库(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如:Firebase,Google, Microsoft)
缺点: