J2EE 站点认证简介
出于安全性的需要和用户授权管理的考虑,常见的 J2EE 站点对特定资源都会加入认证/授权机制。例如一个公网上的论坛,一个只对特定用户开放的 RSS 或 Atom Feed,这些资源都必须在确信访问者为被授权用户时才能向访问者开放。为了实现这样的功能,J2EE 站点通常会采用某种站点认证机制,其中常见的有 HTTP Basic 认证和 J2EE Form-Based 认证。
HTTP Basic 认证
HTTP Basic 认证是 HTTP 认证协议(rfc2617)所定义的标准认证方式。要求 HTTP Basic 认证的服务器会在客户端访问受保护资源时向客户端发出请求,要求客户端上传用户名和密码对。服务器在收到用户名/密码并验证通过后,才将保护资源的内容返回给客户端。它的工作机制如下图:
图 1. HTTP Basic 认证原理

由于是 HTTP 规范,因而常见的浏览器,如 Internet Explorer,Mozilla Firefox,在 步骤 2 中收到服务器对用户名和密码的请求时会弹出认证对话框,供用户输入用户名/密码。
图 2. Firefox 在收到步骤 2 中请求时弹出的用户名/密码输入框

HTTP Basic 认证方式使用 base64 编码方式传送用户名和密码,而 base64 仅仅是一种公开的编码格式而非加密措施,因而如果信道本身不使用 SSL 等安全协议,用户密码较容易被截获。
J2EE Form-Based 认证
Form-Based 认证不同于 HTTP Basic 认证,它是 J2EE 对于认证方式的一种扩展。它使用自定义的 HTML 表单(通常为 login.jsp)作为输入用户名和密码的用户界面,最终将用户在表单上填入的用户名/密码提交至服务器。它的工作机制如下:
图 3. Form-Based 认证原理

分享到:
相关推荐
本篇文章将详细讲解如何在HTTPClient 4.5版本中绕过SSL(Secure Sockets Layer)认证,实现对HTTPS网站的访问。 首先,了解SSL/TLS(Transport Layer Security)协议的重要性。SSL/TLS是网络安全传输的标准,它通过...
1. **连接管理**:HttpClient通过HttpConnectionManager接口控制HTTP连接的创建、复用和关闭,有效地管理连接池,避免了频繁建立新连接带来的性能开销。 2. **请求和响应模型**:HttpClient使用HttpRequest和...
这个实例主要涉及如何配置HttpClient来忽略SSL(Secure Socket Layer)验证,这对于在开发和测试环境中处理自签名证书或未认证的服务器非常有用。以下将详细介绍HttpClient的使用以及如何进行SSL验证的忽略。 首先...
6. **认证和安全**:HttpClient支持多种认证机制,包括基本认证、摘要认证、NTLM等。同时,它也可以处理HTTPS连接,配置SSL上下文以实现安全通信。 7. **异步编程**:HttpClient 4.5及以上版本引入了...
1. **HTTP/1.1和HTTP/2支持**:HttpClient 4.5.3支持HTTP协议的最新版本,可以处理多路复用连接,提高了并发性能。 2. **连接管理**:HttpClient提供了`HttpConnectionManager`接口,用于管理到服务器的连接。默认...
在HttpClient 3.x中,可以设置代理认证、状态管理和连接管理等操作,这些操作在4.x版本中有新的实现方式。程序员需要掌握如何使用`Credentials`和`AuthScope`来处理认证,以及如何配置代理服务器。 此外,迁移指南...
总结来说,处理需要客户端认证的HTTPS接口需要理解SSL/TLS协议、HttpClient的内部工作原理以及如何自定义安全配置。通过`InstallCert.java`和`HTTPSSecureProtocolSocketFactory.java`这两个文件,我们可以实现这个...
接下来,我们需要创建一个HttpClient实例,同时配置它跳过SSL认证。这可以通过自定义`SSLContext`和`TrustStrategy`实现: ```java import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import ...
2. **认证和安全**:HttpClient支持多种认证机制,包括基本认证、摘要认证等。同时,它也支持HTTPS,提供了SSL/TLS的安全传输。 3. **重定向处理**:HttpClient可以自动处理HTTP状态码3xx的重定向,也可以手动控制...
6. **身份验证**:HttpClient支持多种身份验证机制,如基本认证、NTLM认证、digest认证等,可用于与需要身份验证的服务器通信。 7. **SSL/TLS支持**:HttpClient能够处理HTTPS连接,支持SSL和TLS安全协议,确保数据...
3. **身份验证**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证、NTLM、Kerberos等,能够处理跨域和多层代理的认证问题。 4. **Cookie管理**:HttpClient内置了Cookie管理器,可以处理服务器返回的...
6. `commons-logging-1.x.jar`:这是一个轻量级日志框架,HttpClient通过它进行日志记录。 使用`httpclient-4.5.jar`时,需要注意线程安全性和连接管理。HttpClient支持多线程环境,但必须正确配置连接池和管理策略...
1. **连接管理**:HttpClient 提供了`HttpClientConnectionManager`接口,用于管理HTTP连接。这个接口的实现,如`PoolingHttpClientConnectionManager`,允许复用HTTP连接,提高性能并减少服务器负载。你可以通过...
3. **身份验证与安全**:HttpClient支持多种认证机制,如Basic Auth、Digest Auth,同时也可以处理HTTPS连接,确保通信的安全性。 4. **重试策略**:当请求失败时,HttpClient可以根据预设的策略决定是否重试,避免...
1. **HttpClient 4.5核心特性** HttpClient 4.5引入了诸多改进和新特性,包括但不限于: - 改进的连接管理:提供了更高效的连接池管理和重用策略,以减少网络延迟。 - 支持HTTP/2和SPDY协议:这些新协议可以显著...
7. **认证和安全**:HttpClient支持基本认证、NTLM、Kerberos等多种认证机制,并且可以处理HTTPS连接,确保数据传输的安全。 8. **多部分表单提交(Multipart Form Data)**:对于POST请求,特别是上传文件时,...
在身份验证方面,HttpClient 4.1.2支持多种认证机制,如Basic认证、Digest认证、NTLM认证等。开发者只需提供相应的认证信息,HttpClient就能自动处理认证过程。 HttpClient 4.1.2也提供了对HTTPS的支持,包括证书...
1. 创建HttpClient实例:首先需要创建一个HttpClient对象,例如使用`HttpClients.createDefault()`,或者自定义配置。 2. 构建HttpGet或HttpPost对象:根据需求选择HTTP方法,设置URL和其他请求头信息。 3. 执行请求...
1. 创建HttpClient实例:通常使用HttpClientBuilder构建,可以配置各种参数,如连接池、超时时间等。 2. 构建HttpRequest:根据需求创建HttpRequestBase的子类实例,如HttpGet、HttpPost等。 3. 设置请求头:通过set...