第 29 章 使用rmi

Spring Security提供了ContextPropagatingRemoteInvocationFactory,可以在调用rmi时,将当前SecurityContext当做rmi的一部分传递到远程服务器,并使用这个SecurityContext在远程服务器中进行权限校验,这也就是RunAsManager的作用所在,当一个用户访问一个方法时,需要自动调用远程服务,这个远程服务中需要一个角色才可以通过校验,为了让调用此方法的用户都拥有调用远程资源的权限,才使用了RunAsManager为所有访问该方法的用户自动添加一个角色。

实际使用时,只需要为RmiProxyFactoryBean配置remoteInvocationFactory属性。

<bean id="helloServiceProxy" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
	<property name="remoteInvocationFactory">
		<bean class="org.springframework.security.remoting.rmi.ContextPropagatingRemoteInvocationFactory"/>
	</property>
	<property name="serviceUrl" value="rmi://localhost:1199/helloService"/>
	<property name="serviceInterface" value="com.family168.springsecuritybook.ch119.HelloService"/>
</bean>
    

实例在ch119。