本文简介 HTTP Basic,Session,Token 三种认证方法。数据库
这是一种最基本的认证方法。跨域
在这种认证方法下,用户每次发送请求时,请求头中都必须携带能经过认证的身份信息。浏览器
其交互过程以下:安全
Basic
方法进行认证: WWW-Authenticate: Basic
。Authorization: Basic aHk6bXlwYXNzd29yZA==
。客户端 服务端 ------ ------ 1-----------------------------------------> GET / HTTP/1.1 <-------------------------2 HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic 3-----------------------------------------> GET / HTTP/1.1 Authorization: Basic aHk6bXlwYXNzd29yZA== <------------------------4 HTTP/1.1 200 OK 5-----------------------------------------> GET /another-path/ HTTP/1.1 Authorization: Basic aHk6bXlwYXNzd29yZA==
其中传送的身份信息是 <username>:<password>
经 base64 编码后的字串。如本例中的 aHk6bXlwYXNzd29yZA==
, 经 base64 解码后为 hy:mypassword
。服务器
这种认证方法的优势是简单,容易理解。编码
缺点有:.net
这种认证方法结合了 Session 和 Cookie。服务端将本次会话信息以 Session 对象的形式保存在服务端的内存、数据库或文件系统中,并将对应的 Session 对象 ID 值 SessionID 以 Cookie 形式返回给客户端,SessionID 保存在客户端的 Cookie 中。3d
这是一种有状态的认证方法:服务端保存 Session 对象,客户端以 Cookie 形式保存 SessionID。code
其交互过程以下:对象
优势:
缺点:
这是一种 SPA 应用和 APP 常常使用的认证方法。它是一种无状态的认证方法。
客户端首先将用户信息发送给服务端,服务端根据用户信息+私钥生成一个惟一的 Token 并返回给客户端。Token 只保存在客户端,以后客户端的每一个请求头中都携带 Token,而服务端只经过运算(无需查询)来验证用户。
客户端 服务端 ------ ------ 1-----------------------------------------> GET / HTTP/1.1 <-------------------------2 HTTP/1.1 401 Unauthorized WWW-Authenticate: Token 3-----------------------------------------> GET / HTTP/1.1 Authorization: Token f613d789819ff93537ee6a <------------------------4 HTTP/1.1 200 OK 5-----------------------------------------> GET /another-path/ HTTP/1.1 Authorization: Token f613d789819ff93537ee6a
优势:
缺点:
目前使用较多的是基于JWT(JSON Web Tokens) 的 Token 认证法。