HttpInvoker を介して実装された春のリモート処理があります。私のクライアントとサービスは、春のドキュメントから取得した以下のようになります。私は春のドキュメントに従いました:(会社のポリシーにより、実際のコードを投稿できませんでした)=>春のドキュメント
私の httInvoker サービスは春のセキュリティによって保護されており、クライアント側では、次のように httpinvokerrequestexecutor とともに次のクライアント コードがあります。
<bean id="httpProxybean" class="org.springframework....HttpInvokerProxyFactoryBean>
<property name=".." ref="executor"/>
<property name="service"...
</bean>
<bean id="executor" class='org......HttpInvokerRequestExecutor/>
私が抱えている問題は、以下のようにテスト クライアントからサービスをテストしようとしているときです。
public static void main(String [] args){
Application context = new XmlPathApplicationContext("client.xml");
Service service =(Service) context.getBean("service");
}
間違っている場合は訂正してください。HttpInvokerRequestExecutor が原因でそれを取得していると想定しています。ここで、以下のようにユーザー名とパスワードを渡そうとすると、例から取得しました。http リモート サービスに接続できないという同じエラーが引き続き表示されます: 401 unauthorized 。HttpInvokerRequestExecutor を削除し、サービスのインターセプト URL を無効にすると、正常に動作します。
public static void main(String [] args){
final ApplicationContext context =
new ClassPathXmlApplicationContext(
"client/spring-http-client-config.xml");
String user = "bob";
String pw = "bob";
SecurityContextImpl sc = new SecurityContextImpl();
Authentication auth = new UsernamePasswordAuthenticationToken(user,
pw);
sc.setAuthentication(auth);
SecurityContextHolder.setContext(sc);
Service service =(Service) context.getBean("service");
}
テスト目的で構成されたセキュリティ構成 xml は次のとおりです。
<authenticationManager>
.....................
<user username="bob" password="bob" authorities ="ROLE_ADMIN">
..........................
</authenticationManager>
インターセプト URL は
<intercept-url path="/remoting/*" access="hasRole('ROLE_ADMIN')
. ここで質問: i. クライアントをテストするとき、クライアントからサーバーに資格情報を渡すにはどうすればよいですか? 私のサービスは春のセキュリティによって保護されているので、サーバーが認証できるようにセキュリティコンテキストをクライアントからサーバーに渡したいと思います。ii. テスト時に、HttpInvokerRequestExecutor を削除するとサービスにアクセスでき、サーバー側では、サービスにアクセスするためのインターセプト URL フィルターを無効にします。これについてあなたの助けを本当に感謝します. 私は解決策を探していました iii。クライアント側からサーバー側に資格情報を渡す方法と、テスト中にこれが可能かどうかについてのアイデアを教えてください。