前言
其实不仅webapi,在web中的身份验证也是一个问题。两者在请求时都通过http请求,有相似之处。
对于http的身份验证方式有两个要点,必须传输敏感信息,但是又要保证安全性。
正文
web
对于web主要是将验证信息保存在cookie里面,然后取出cookies来验证,对于cookei的安全性,可以加密,可以分割多个cookie,后台取出这些cookie进行验证,还可以设置HttpOnly一定程度上防止窃取。
api
cookie只用于web网站,对于移动端接口,因为没cookie,只能另寻他径。其中有一种方法是将敏感信息放在header请求头里面。
1.使用token
每次都传输明文密码是愚蠢的。首先我们需要让用户在第一次验证时传输明文密码,然后返回给用于一个滑动过期的token,接下来的请求用户将带着token进行请求。这个滑动过期的token一定程度上保证了信息安全性。
2.把信息放在header请求头里面。
在http请求头中构造一个key值Authentication,把敏感信当作value值。不放在消息体里面。
3.使用加密
Basic Auth
Basic Auth使用base64编码把username和password加密后放入请求头,不安全,但是开发和调试简单。如账号181密码123,生成的header请求头的Authorization字段: