Java源码分析系列之HttpServletRequest源码分析
2017-09-09 11:39
555 查看
从源码当中 我们可以 得知,HttpServletRequest其实 实际上 并 不是一个类,它只是一个标准,一个 接口而已,它的 父类是ServletRequest。
从阅读源码 当中 ,我们 可以 获得 如下认证信息:
分别是 BASIC,FORM,CLIENT_CERT,DIGEST,那么 这几种不同的认证有什么区别呢?
下面 是一些 介绍 :
Basic:这种 情况下 ,需要 用户名和密码 进行认证,用用户 输入的用户名 和密码 和 服务器上 的数据 中 的当前用户的用户名和 密码 进行对比 。具体的流程如下图所示 :
客户端请求服务器的受保护的资源
服务器发一个 请求,去 客户端 请求 username和password.
客户端 发送 用户名 和密码给服务端
服务端返回相应的数据给 客户端
![](https://docs.oracle.com/cd/E19575-01/819-3669/images/security-httpBasicAuthentication.gif)
这种 认证 方式并不是安全的,客户端发送的用户名 和密码 是 Base64形式 加密的文本,这种情况的 用户名和 密码 是会被暴露 出来的,如果 有 人能够截获用户名和密码 ,这是 很 容易被解码的,当然 如果 使用 的是 SSL,HTTPS等 策略的话,会减少这种风险的发生率。
认证方式
public interface HttpServletRequest extends ServletRequest
从阅读源码 当中 ,我们 可以 获得 如下认证信息:
/** * String identifier for Basic authentication. Value "BASIC" */ public static final String BASIC_AUTH = "BASIC"; /** * String identifier for Form authentication. Value "FORM" */ public static final String FORM_AUTH = "FORM"; /** * String identifier for Client Certificate authentication. Value "CLIENT_CERT" */ public static final String CLIENT_CERT_AUTH = "CLIENT_CERT"; /** * String identifier for Digest authentication. Value "DIGEST" */ public static final String DIGEST_AUTH = "DIGEST";
分别是 BASIC,FORM,CLIENT_CERT,DIGEST,那么 这几种不同的认证有什么区别呢?
下面 是一些 介绍 :
Basic:这种 情况下 ,需要 用户名和密码 进行认证,用用户 输入的用户名 和密码 和 服务器上 的数据 中 的当前用户的用户名和 密码 进行对比 。具体的流程如下图所示 :
客户端请求服务器的受保护的资源
服务器发一个 请求,去 客户端 请求 username和password.
客户端 发送 用户名 和密码给服务端
服务端返回相应的数据给 客户端
![](https://docs.oracle.com/cd/E19575-01/819-3669/images/security-httpBasicAuthentication.gif)
这种 认证 方式并不是安全的,客户端发送的用户名 和密码 是 Base64形式 加密的文本,这种情况的 用户名和 密码 是会被暴露 出来的,如果 有 人能够截获用户名和密码 ,这是 很 容易被解码的,当然 如果 使用 的是 SSL,HTTPS等 策略的话,会减少这种风险的发生率。
参考资料
https://docs.oracle.com/cd/E19575-01/819-3669/bncbn/index.html相关文章推荐
- no mapping found for http request with uri(源码角度分析)
- jquery 源码分析7-ajax(C)XMLHttpRequest回调函数onreadystatechange函数
- springMvc源码学习之:利用springMVC随时随地获取HttpServletRequest等对象
- 分析MockHttpServletRequestBuilder中content和param的区别
- [httpcomments-client-4.5.2]--源码分析(HTTP request)
- ASIHTTPRequest源码简单分析
- HttpClient源码解析系列:第五篇:HttpClientBuilder中的配置分析
- 源码分析系列——okHttp
- springMVC源码分析--HttpRequestHandlerAdapter(四)
- springMVC源码分析--HttpRequestHandlerAdapter(四)
- 根据源码用HttpServletRequest获取MultipartFile的问题
- springMVC源码分析--HttpRequestHandlerAdapter(四)
- HttpServlet源码分析
- Nginx源码分析 - HTTP模块篇 - ngx_http_wait_request_handler函数和HTTP Request解析过程
- ASIHTTPRequest源码简单分析
- Jmeter源码之HTTP Request Sampler分析(五)
- SpringMVC控制器设值原理分析(ModelAndView的值通过HttpServletRequest直接取到的原因)
- ASIHTTPRequest源码简单分析
- HttpServletResponse与HttpServletRequest总结
- Xutils-http-HttpServletRequest详解