您好,欢迎访问一九零五行业门户网

HTTP认证方式有哪些?

http中有如下常用认证:
1、basic认证
2、digest认证
3、ssl client认证
4、表单认证
http basic认证
每次客户端请求都需带上authorization请求头, 值为basic xxx。xxx为对用户名和密码进行base64编码后的值。 若客户端是浏览器,则浏览器会提供一个输入用户名和密码的对话框,用户输入用户名和密码后,浏览器会保存用户名和密码,用于构造authorization值。当关闭浏览器后,用户名和密码将不再保存。
用户名/密码经过base64加码后,这个base64码值可以轻易被解码并获得用户名/密码,所以此认证方式并不安全。为了传输安全,需要配合ssl使用。
http digest认证
digest认证步骤如下:
第一步:客户端访问http资源服务器。由于需要digest认证,服务器返回了两个重要字段nonce(随机数)和realm。
第二步: 客户端构造authorization请求头,值包含username、realm、nouce、uri和response的字段信息。其中,realm和nouce就是第一步返回的值。nouce只能被服务端使用一次。uri(digest-uri)即request-uri的值,但考虑到经代理转发后request-uri的值可能被修改、因此实现会复制一份副本保存在uri内。response也可叫做request-digest,存放经过md5运算后的密码字符串,形成响应码。
第三步:服务器验证包含authorization值的请求,若验证通过则可访问资源。
digest认证可以防止密码泄露和请求重放,但没办法防假冒。所以安全级别较低。
digest和basic认证一样,每次都会发送authorization请求头,也就相当于重新构造此值。所以两者易用性都较差。
http ssl client认证
ssl认证安全级别较高,但需要承担证书费用。ssl认证过程中涉及到一些重要的概念,数字证书机构的公钥、证书的私钥和公钥、非对称算法(配合证书的私钥和公钥使用)、对称密钥、对称算法(配合对称密钥使用)。
大致的认证步骤如下:
第一步:客户端请求服务资源,服务器要求客户端出示数字证书。
第二步:客户端发送数字证书
第三步:服务器通过数字证书机构的公钥验证数字证书的合法性,验证通过后取出证书的公钥。
第四步:服务端随机生成一个随机数即为对称密钥,并使用非对称算法和证书公钥加密。这个加密后的字符串,只有发送的客户端能解。
第五步:客服端使用非对称解密算法和证书私钥获取服务端发送的对称密钥。后续客户端和服务端的请求直接基于对称算法和对称密钥。由于只有客户端和服务端有对称密钥,所以后续发送的请求较安全。
ssl可以防泄漏、假冒、重放,所以在web系统中得到了广泛的应用。
ssl客户端认证在实际中用得不多,因为一来需要在客户端中安装证书(升级麻烦)、二来需要承担证书费用。
http 表单认证
基于表单的认证方式并不存在于http规范。所以实现方式也呈现多样化。表单认证一般都会配合cookie+sessiond的使用,现在绝大多数的web站点都是使用此认证方式。用户在登录页中填写用户名和密码,服务端认证通过后会将sessionid返回给浏览器端,浏览器会保存sessionid到浏览器的cookie中。因为http是无状态的,所以浏览器使用cookie来保存sessionid。下次客户端发送的请求中会包含sessionid值,服务端发现sessionid存在并认证过则会提供资源访问。
更多相关知识,请访问 !!
其它类似信息

推荐信息