在jersey ReaderInterceptor中使用401中止请求

在jersey ReaderInterceptor中使用401中止请求,jersey,interceptor,Jersey,Interceptor,在jersey ReaderInterceptor中使用401中止请求。这是我的截取代码。我正在尝试中止XML主体具有签名的请求 import java.io.*; import java.security.*; import java.security.cert.*; import org.util.nanolog.Logger; import org.w3c.dom.Document; import com.sil.upi.application.XMLSigner; import j

在jersey ReaderInterceptor中使用401中止请求。这是我的截取代码。我正在尝试中止XML主体具有签名的请求

import java.io.*;
import java.security.*;
import java.security.cert.*;

import org.util.nanolog.Logger;
import org.w3c.dom.Document;

import com.sil.upi.application.XMLSigner;

import jakarta.inject.Singleton;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.ext.ReaderInterceptor;
import jakarta.ws.rs.ext.ReaderInterceptorContext;

//@formatter:off
@Singleton
public final class ServerSignatureInterceptor implements ReaderInterceptor {

    private static final PublicKey npciPublicKey = readNPCIPublicKey();

    @Override
    public final Object aroundReadFrom(final ReaderInterceptorContext context) throws IOException, WebApplicationException {
        try {
            final InputStream inputStream      = context.getInputStream();
            final Document    document         = XMLSigner.inputstreamToDocument(inputStream);
            final boolean     isValidSignature = XMLUtils.validateXMLDigitalSignature(npciPublicKey, document);
            if(!isValidSignature) {
                abortWith401
            }
            context.setInputStream(XMLUtils.documentToInputStream(document));
        } catch (Exception e) {e.printStackTrace();}
        return context.proceed();
    }
}

拦截器没有用于中止请求的内置方式。一个请求过滤器可以。你能做的就是抛出一个异常。实现ExceptionMapper来处理异常,或者使异常扩展WebApplicationException。