我已經使用本教程實現了OAuth2處理程序https://docs.wso2.org/display/ESB481/Securing+APIs#SecuringAPIs-GettingtheOAuthtokenWSO2 ESB OAuth2處理程序,如何處理大型Post的無效標記。
如果使用無效標記,則在將未經授權的響應發送回客戶端之前,我無法清除主體。在發送消息之前,我嘗試清除肥皂身體,但仍將原始發佈數據發送回客戶端。 HTTP狀態代碼更改爲401.
在發送響應之前,是否有任何方法在Oauth2處理程序中清空肥皂主體?
在OAuth2教程中,處理程序只根據標記驗證返回true/false。如果我在處理程序返回false時執行該請求,則請求只會掛起而不會收到任何響應。它應該工作,而不是手動發送迴應內部處理程序?
這裏是我當前的代碼片段:
public boolean handleRequest(MessageContext msgCtx) {
....
boolean isValid = stub.validate(dto).getValid();
if (!isValid)
{
log.error("is not valid token");
Axis2MessageContext axis2smc = (Axis2MessageContext) msgCtx;
org.apache.axis2.context.MessageContext axis2MessageCtx = axis2smc.getAxis2MessageContext();
axis2MessageCtx.setProperty("HTTP_SC", "401");
axis2MessageCtx.setProperty("DISABLE_CHUNKING", true);
axis2MessageCtx.setProperty("NO_ENTITY_BODY", new Boolean("true"));
msgCtx.setProperty("RESPONSE", "true");
msgCtx.setTo(null);
// Trying to flush response body with dummy tags, but this does not work
// However it works in Custom mediator implemention.
try {
SOAPBody body = msgCtx.getEnvelope().getBody();
body.setFirstChild(AXIOMUtil.stringToOM("<p></p>"));
}
catch (XMLStreamException e) {
log.error(e.getStackTrace());
}
Axis2Sender.sendBack(msgCtx);
return false;
}
return isValid;
}
感謝您的任何提示。