`

Hessian 权限认证

    博客分类:
  • Java
阅读更多

Hessian 权限认证 
Hessian的一些基本简介已经在上一节已经全部介绍了,上一节还介绍了Hessian是把对象序列化为二进制流的形式在http信道中传输,那么对于安全性高的应用不应该采用hessian(比如网上支付等)、可以加一些权限验证,比如在服务器端加用户名,密码验证,然后在客户端提供用户名和密码,可如此一来用户名密码也会被捕获,毕竟用户名密码都在Http请求中,如果安全级别特别高的可以加Token,也就是加一层发送前的预备,如下图: 
 
这样的话,既使请求被拦截,他们得到的也只不过是一个过期的Token,无法再一次发送到服务端,当然哪个程序都一样,安全级别一高就会添加很多的操作,就像开着防火墙网速会受一定的影响.下面我来介绍简单的权限认证,后续再结合实践优化程序. 
修改服务端程序如下: 

 

public class YclHessianServiceExporter extends HessianServiceExporter { 
	public static final String AUTH = "ycl";
	@Override
	public void handleRequest(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String auth = request.getHeader("auth");
		if(auth == null || !auth.equalsIgnoreCase(AUTH)){ 
			//记录异常日志
			return ;
		}
		super.handleRequest(request, response);
	}

}

 服务器配置修改如下: 

 

<bean name="/PersonManager" 
		class="org.springframework.remoting.caucho.YclHessianServiceExporter">
		
		<!--  需要导出的目标bean--> 
        <property name="service" >
        	<ref bean="personManager" />
        </property> 
        <!--  Hessian服务的接口--> 
        <property name="serviceInterface" value="com.module.PersonManager"/>  
	</bean>
 

修改客户端程序如下(这是一个代理工厂,每一次客户端通过代码连接服务器时都会先通过URL来得到服务器端的连接) 

 

public class YclHessianProxyFactory extends HessianProxyFactory{

	@Override
	protected URLConnection openConnection(URL url) throws IOException {
		URLConnection conn = super.openConnection(url);
        conn.setRequestProperty("AUTH", "ycl");
        return conn; 
	}

}
 

客户端配置如下: 

 

<!-- PersonManager服务 -->
	<bean id="personManagerClient"
		class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
		<property name="serviceUrl">
			<value>
				http://localhost/Hessian/remoting/PersonManager
			</value>
		</property>
		<property name="serviceInterface">
			<value>com.module.PersonManager</value>
		</property>
		  <property name="proxyFactory">
            <bean class="com.caucho.hessian.client.YclHessianProxyFactory"/> 
       </property> 
	</bean>

 如此一来,在服务器启动的时候接收信息时,就会添加验证,如果Auth验证不通过,那么就不会再继续执行以下的程序.这种方式是能够解决权限验证方式,但是如何添加Token,使用这种方式如果请求被拦截,服务还是可以被窃取,这将在下一节学习,这一节要结合上一节.

 

 

原文:http://a123159521.iteye.com/blog/742718

分享到:
评论

相关推荐

    权限管理

    在权限管理的上下文中,如果Hessian服务涉及敏感操作,我们需要在客户端和服务端都实现相应的权限校验,确保只有经过授权的调用才能执行。 总结起来,权限管理是系统安全的重要组成部分,涉及到用户身份验证、资源...

    ssh实现仿急宅送

    5. **Shiro权限控制**:Apache Shiro是一个强大且易用的Java安全框架,处理认证、授权、会话管理和加密等功能。在"仿急宅送"项目中,Shiro可能用于实现用户权限管理,控制不同角色的访问权限,确保系统安全。 6. **...

    spring-security3.1.4 完整的jar包

    它提供了SecurityContextHolder来存储当前用户的认证信息,以及AbstractSecurityInterceptor用于处理权限检查。 2. **spring-security-web-3.1.4.RELEASE.jar**:这个模块主要处理Web应用程序中的安全性问题,包括...

    springboot+dubbo分布式框架

    3. **认证与授权**:实现登录验证,将用户与角色关联,授权则根据角色分配的权限进行资源访问控制。 总的来说,"springboot+dubbo分布式框架"结合了SpringBoot的快速开发能力和Dubbo的高效服务治理,为构建复杂的...

    JAVA技术架构及开发规范文档.pdf

    第一层通过二级目录形式组织不同模块,与第二层之间使用Hessian进行通信,两者可独立部署。考虑到未来性能需求,前端采用Nginx进行负载均衡,实现动静分离和Web应用程序的负载均衡。Nginx的url转发功能用于将静态...

    Spring Security集成CAS客户端实例

    在实际应用中,开发者需要根据项目需求调整配置,比如自定义登录页面、增加权限控制、处理异常情况等。这个实例提供了一个基础的SSO解决方案,帮助开发者理解Spring Security和CAS的集成机制,并在此基础上进行扩展...

    CAS服务端(非原生)

    otauser-api可能包含服务接口定义,otauser-remote-client-hessian可能是与远程服务通信的客户端实现,使用了Hessian协议。otauser-web可能包含Web应用程序的代码,otauser-remote-api可能是对外提供的远程服务接口...

    springsecurity所有jar包

    它为Web应用和企业级应用提供安全解决方案,包括用户认证、权限控制、会话管理等多个方面。在Spring Security 3.1.2版本中,包含了多个jar包,每个jar包都有其特定的功能,下面将对这些关键jar包进行详细介绍。 1. ...

    hession调用

    同时,可以通过权限控制,只允许认证的客户端访问服务。 6. **性能优化**:尽管Hession已经相对高效,但还可以通过缓存、连接池等方式进一步优化性能。例如,对于频繁调用的服务,可以缓存服务代理对象;对于多次...

    SSH学习笔记6 SSH学习笔记6

    Spring是一个广泛使用的Java应用框架,它可以与SSH一起使用,实现远程调用服务(如Hessian和 Burlap)或使用Spring的JMX支持通过SSH进行远程管理。这个部分可能会讲解如何配置Spring应用以支持SSH连接,以及如何使用...

    Dubbo-admin-2.6.0最新版(Maven)源码

    在`src/main/java/com/alibaba/dubbo/admin/auth`包下,有对用户权限和认证的处理,如`AuthService`接口及其实现类。这部分代码实现了基于角色的访问控制(RBAC),确保只有授权用户才能访问特定资源。 7. **配置...

    spring学习笔记

    它可以实现用户认证、权限控制等功能,提供了强大的安全防护。 **6. Spring的远程服务** Spring支持RMI、HTTP、Hessian和 Burlap等协议的远程服务调用,使分布式系统间的通信变得更加简单。 **7. Spring MVC** ...

    spring3.x企业应用开发实战源代码

    9. **Chapter 16**:可能涉及到Spring的安全管理,如Spring Security的配置和使用,源代码可能包含用户认证、权限控制等示例。 10. **Chapter 11**:可能讲解了Spring与其他技术的整合,如Spring与Struts、JSF等...

    RPC分布部署demo

    8. **安全机制**:在分布式环境中,RPC调用可能涉及敏感数据,因此需要有相应的安全措施,如SSL/TLS加密、身份认证、权限控制等。 9. **监控与调优**:RPC框架通常提供监控工具,如统计调用次数、耗时、异常情况等...

    dubbo linux 的一些资源

    8. **安全性**: ZooKeeper 支持 SASL 认证和 ACL(访问控制列表),可以为不同用户或角色设置不同的权限,增强系统安全性。 9. **扩展性**: 如果你的应用规模扩大,可以通过水平扩展 ZooKeeper 集群和 Dubbo 服务来...

    Doubbo面试及答案.rar

    - **身份认证(Authentication)**:确保调用方和服务提供方的身份合法性。 - **授权(Authorization)**:控制调用方对服务的访问权限。 - **加密传输(Encryption)**:保证数据在传输过程中的安全性。 9. **...

    2021年JAVA核心知识点整理.rar

    2. **AOP(面向切面编程)**:用于实现日志记录、权限控制等横切关注点。 3. **SpringMVC**:处理HTTP请求,提供Model-View-Controller架构。 4. **Spring Boot**:简化Spring应用的初始搭建和配置。 **微服务** ...

    java开源包1

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包11

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

    java开源包2

    6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不...

Global site tag (gtag.js) - Google Analytics