問題: Web サービス メソッドに @Secured アノテーションを追加すると、エンドポイントが無効になり、ws エンドポイントの呼び出し時にエンドポイント マッピングが見つかりませんというエラーが発生します。
背景: 私の Spring Web Service は、UsernameToken と Timestamp を使用して消費者を認証するように保護されています。これは、@Secured を追加してロールベースの承認を適用するまではまったく問題なく機能します。インターセプターは、<sws:interceptors> を使用して spring-ws-servlet.xml で構成されます。フレームワークのバージョン:
- 春の ws: 2.0.5.RELEASE
- 春の ws セキュリティ: 2.0.5.RELEASE
- 春のセキュリティ: 3.0.7.RELEASE
- wss4j: 1.5.12
これが私がやろうとしていることのサンプルです。
終点:
...
@Endpoint
public class XYZEndpoint implements XYZService{
@Override
@PayloadRoot(localPart = XYZ_REQUEST, namespace = NAMESPACE_XYZ)
//@Secured({"ROLE_XYZ"})
public XYZResponse produceXYZ(XYZRequest request) {
...
return new XYZResponse();
}
}
...
spring docs で説明されているように、以下の global-method-security を使用して @Secured アノテーションを有効にしています。
spring-ws-servlet.xml
...
<security:global-method-security secured-annotations="enabled" />
....