`
cfan_haifeng
  • 浏览: 122378 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

javaee-客户端身份认证

阅读更多

1.客户端身份认证

 

  看下面这个图:

 

 

      大家对这个图一定似曾相识吧,我们公司的工作日志登录界面就是形似这样的丑陋款式,显然它不用css、htm堆积出来的。它应该属于http协议的范围。

      当浏览器接收到web服务器发送的401(Unauthorized)的响应状态码(状态行)WWW-Autherticate响应头时,浏览器就会弹出类似上面的对话框。用java servlet实现如下:

 

 

response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate", "BASIC realm=\"this a realm\"");
 

2.认证方式

 

   服务器发送的响应头可以指定两种认证方式:BASICDIGEST[dai'dʒest](即基本认真方式和文摘认证方式)。

 

2.1 BASIC

 

      BASIC验证(上面的代码就会要求一个BASIC验证)要求浏览器把用户名和密码进行BASE64编码后创送给服务器。注意了:BASE64只是一个编码方式,不是加密的,是明码的,知道原理很随意就可以看成原文。

 

       例如,如果你输入的用户名为:admin,密码为:123456。浏览器将会变为:Basic YWRtaW46MTIzNDU2,并方到消息头(请求头)中发送过去。如下所示:

 

 消息头
host : localhost:8080
connection : keep-alive
cache-control : max-age=0
authorization : Basic YWRtaW46MTIzNDU2
user-agent : Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.152 Safari/535.19
accept : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-encoding : gzip,deflate,sdch
accept-language : zh-CN,zh;q=0.8
accept-charset : GBK,utf-8;q=0.7,*;q=0.3

 

  “Basic YWRtaW46MTIzNDU2”中,Basic 表示Basic 认证方式。YWRtaW46MTIzNDU2则为admin:123456的BASE64编码。

 

  看了上面的原理,服务端在后台接受的方式就呼之欲出了:

 

 

byte[] decodedBytes = decoder.decodeBuffer(encodedAuth.substring(6));//去除前面的Base64
		
		/* 读者可以试试对于中文的用户名,下行代码该选择什么字符集进行解码? */
		String decodedInfo = new String(decodedBytes);
		System.out.println("BASE64解码:"+decodedInfo);
		int idx = decodedInfo.indexOf(":");
		if (idx < 0) {
			out.println("信息格式不完整");
			return;
		}
		String user = decodedInfo.substring(0, idx);
		String password = decodedInfo.substring(idx + 1);

 

 

2.2 DIGESTD

     DIGESTD的认证方式细节比较复杂,基本思路是将用户名和密码以及某些其他信息进行混合后,在执行MD5散列算分,并将散列算法结果和附加信息一起以名文文本通过网络发送到服务器。

 

 

 

    下载附件,访问http://localhost:8080/Test_servlet/index.jsp,点击其中的,[AuthenticateBaseServlet-Base方式客户端身份认证]即可看到效果。

 

PS:浏览器最多只允许用户输入3次用户名和密码。

 

 

参考:《深入体验Java_Web开发内幕-核心基础》

 

……

  • 大小: 15.5 KB
分享到:
评论

相关推荐

    JavaEE---黄俊贤7500.doc

    - **Spring Security**: 提供身份验证和授权服务,保护应用程序免受安全威胁。 - **MyBatis**: SQL映射框架,结合了Java的POJOs和SQL,提供了灵活的数据持久化。 4. **前端技术**: - **XML**和**HTML**: 用于...

    JAVAEE课程设计--注册登录系统.pdf

    在这个系统中,用户可以进行注册和登录操作,整个流程涵盖了Web开发的基本要素,如客户端验证、数据库交互以及数据安全性。 **系统概述** 系统主要包括两个功能模块:注册和登录。这两个模块均基于Servlet和JSP技术...

    JavaEE 5.0规范中文版

    - **应用客户端用户认证**:支持应用客户端的身份验证。 - **资源认证要求**:规定了对资源访问所需的认证级别。 ##### 3.5 授权要求 - **代码授权**:基于代码来源进行权限分配。 - **调用者授权**:根据调用者的...

    JavaEE入门看这个系列真的就够了(一)----登陆

    总的来说,这个系列的教程通过一个具体的登录实例,让初学者能够动手实践,理解Web应用的基本工作流程,包括客户端与服务器的交互、数据验证、数据库操作以及安全性考虑。如果你正在学习JavaEE,这个教程将为你提供...

    javaee面试题集锦 面试题 java

    - Spring Security:身份验证和授权。 10. **Web服务** - SOAP(Simple Object Access Protocol)与RESTful API的区别。 - JAX-WS和JAX-RS:Java API for XML Web Services和Java API for RESTful Web Services...

    JAVAEE 核心教程

    JavaEE提供了一套全面的安全模型,包括角色、权限、SSL/TLS加密、以及JAAS(Java Authentication and Authorization Service)用于用户身份验证和授权。 以上只是JavaEE核心教程中的一部分内容,实际学习中,你将...

    JavaEE用户管理系统

    - **身份验证与授权**:系统应具备用户身份验证机制,如基于HTTP Basic Auth或Form-Based Auth,以及角色权限分配,确保只有合法用户能访问特定资源。 - **防止SQL注入**:通过预编译SQL语句或使用ORM框架来避免...

    javaEE服务端RSA解加解密.zip

    4. **身份认证**:RSA密钥对也可用于实现身份认证,例如,客户端生成一个随机密钥,使用服务器的公钥加密后发送给服务器,服务器用私钥解密,验证成功后建立安全连接。 在实现JavaEE服务端RSA解加解密的过程中,...

    尚硅谷_JavaEE 面试

    - 包括XSS(跨站脚本攻击)、CSRF(跨站请求伪造)、SQL注入等安全问题的防范措施,以及HTTPS、身份验证、授权等安全机制。 13. **性能优化**: - 缓存策略、数据库索引优化、连接池配置、异步处理、负载均衡等...

    javaEE注册登录系统

    登录成功后,服务器会创建一个会话(session),保存用户的登录状态,并通过cookie在客户端保持会话。当用户请求其他页面时,服务器检查session来确认用户是否已登录。 8. **错误处理与页面重定向** 对于无效的...

    JavaEE_5.0规范_简体中文版

    - **安全认证**:支持多种认证模式,包括基于表单的身份验证。 - **用户认证需求**:详细介绍了如何实现用户身份验证和会话管理。 - **授权要求**:规定了访问控制策略,确保只有授权用户才能访问特定资源。 #### ...

    JAVAEE5详细教程

    - **安全性**:JAVAEE提供了丰富的安全机制,如身份验证、授权和加密技术。 - **性能优化**:通过缓存机制、连接池管理和异步处理等方式提高应用程序性能。 - **监控与调试**:利用日志记录、性能分析工具对应用进行...

    JavaEE企业级开发9.5用户登录

    总结来说,JavaEE企业级开发9.5用户登录涉及多个方面,从身份验证和授权策略的实施,到会话管理、Servlet、JSP、过滤器、拦截器的使用,再到安全框架的选择和数据库集成。开发者需要对这些概念和技术有深入理解,...

    javaee加密部署

    9. **OAuth2和OpenID Connect**:这两种协议主要用于第三方应用的授权,JavaEE应用可以作为OAuth2提供者或客户端,实现用户身份验证和授权。 10. **JCE(Java Cryptography Extension)**:JCE是Java平台的加密扩展...

    javaee 宿舍管理系统

    7. **安全与权限控制**:在宿舍管理系统中,通常需要用户身份验证和授权机制。Spring Security或Apache Shiro等框架可以用来实现登录验证、角色权限控制,确保只有合法用户能访问特定功能。 8. **AJAX与前端技术**...

    JAVAEE云盘管理系统

    7. **安全性**:包括用户身份验证、权限控制和数据加密。使用HTTPS协议保障通信安全,同时实施角色基础的访问控制(RBAC)策略,确保用户只能访问其被授权的资源。 8. **用户体验**:通过AJAX技术实现页面局部刷新...

    javaee的网上书店程序,有一定参考价值

    JavaEE提供了一套标准的安全框架,如JAAS(Java Authentication and Authorization Service),用于实现身份验证和权限控制。 6. **购物车与订单处理** 购物车功能需要跟踪用户的选购书籍,而订单处理则涉及到支付...

    SpringBoot2-JavaEE11-DemoProject

    4. **安全模块**:可能使用Spring Security来保护应用程序的资源,实现身份验证和授权。这可能涉及到JWT(JSON Web Tokens)的使用,以实现无状态的身份验证。 5. **健康检查与监控**:通过Spring Boot的Actuator...

    JavaEE(权威)

    - **安全性**:提供全面的安全机制,包括身份验证、授权和加密等。 ##### 1.4 JavaEE的四层模型 JavaEE 的四层模型包括客户层、Web 层、业务层和企业信息系统 (EIS) 层。 - **客户层**:负责呈现用户界面并与用户...

Global site tag (gtag.js) - Google Analytics