2012-01-30 90 views
1

似乎證書(X509)驗證執行的唯一方式是: 如果對服務器的請求包含已存在於服務器密鑰庫中的證書,則處理該請求(以及相同與服務器的響應)。Apache CXF/WSS4J證書驗證

你能請,提出一個方法來驗證的CRL和根證書的證書?

有關使用彈簧安全和CXF的<jaxws:inInterceptors>什麼?不能找到一個教程還

進展 試圖寫我自己的攔截:

public class MyInInterceptor extends AbstractPhaseInterceptor<Message> { 
Logger logger = Logger.getLogger(MyInInterceptor.class); 

public MyInInterceptor() { 
    super(Phase.PRE_PROTOCOL); 

    addAfter(WSS4JInInterceptor.class.getName()); 
} 

private SOAPMessage getSOAPMessage(SoapMessage msg) { 
    SAAJInInterceptor.INSTANCE.handleMessage(msg); 
    return msg.getContent(SOAPMessage.class); 
} 

@Override 
public void handleMessage(Message message) throws Fault { 
    logger.info("custom handleMessage method"); 

    logger.info("getting a certificate"); 
    HashMap engine = (HashMap) message.get("wss4j.signature.result"); 
    X509Certificate certificate = (X509Certificate) engine.get("x509-certificate"); 

    logger.info("parsing certificate"); 

} 

對於現在的問題是用任何可能的方式來驗證證書,說的純java ..

回答

1

的解決方案是開發一個自定義攔截器:

/** 
* Constructor 
*/ 
public SecurityInInterceptor() { 
    super(Phase.PRE_PROTOCOL); 
    getAfter().add(SAAJInInterceptor.class.getName()); 
} 

硬溶膠請提供thisthis的答案。