在jersey ReaderInterceptor中使用401中止请求
在jersey ReaderInterceptor中使用401中止请求。这是我的截取代码。我正在尝试中止XML主体具有签名的请求在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
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。