Oauth 2.0 WSO2 ESB OAuth2处理程序,如何处理大型Post的无效令牌。

Oauth 2.0 WSO2 ESB OAuth2处理程序,如何处理大型Post的无效令牌。,oauth-2.0,wso2,wso2esb,Oauth 2.0,Wso2,Wso2esb,我已经使用本教程实现了OAuth2处理程序 在这种情况下,当使用无效令牌时,在将未经授权的响应发送回客户端之前,我无法清除主体。我试图在发送回消息之前清除Soap主体,但仍然将原始Post数据发送回客户端。HTTP状态代码更改为401 在返回响应之前,有没有办法清空Oauth2处理程序中的soap主体 在OAuth2教程中,处理程序仅根据令牌验证返回true/false。若我在处理程序返回false时执行该请求,那个么请求将挂起,而不会得到任何响应。它是否应该在不将响应手动发送回处理程序的情况下

我已经使用本教程实现了OAuth2处理程序

在这种情况下,当使用无效令牌时,在将未经授权的响应发送回客户端之前,我无法清除主体。我试图在发送回消息之前清除Soap主体,但仍然将原始Post数据发送回客户端。HTTP状态代码更改为401

在返回响应之前,有没有办法清空Oauth2处理程序中的soap主体

在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;
 }
public boolean handleRequest(MessageContext-msgCtx){
....
布尔值isValid=stub.validate(dto.getValid();
如果(!isValid)
{ 
log.error(“无效令牌”);
Axis2MessageContext axis2smc=(Axis2MessageContext)msgCtx;
org.apache.axis2.context.MessageContext axis2MessageCtx=axis2smc.getAxis2MessageContext();
axis2MessageCtx.setProperty(“HTTP_SC”,“401”);
axis2MessageCtx.setProperty(“禁用组块”,true);
axis2MessageCtx.setProperty(“无实体”,新布尔值(“真”);
msgCtx.setProperty(“响应”、“真”);
msgCtx.seto(空);
//试图用伪标记刷新响应主体,但这不起作用
//但是,它可以在自定义中介实现中工作。
试一试{
SOAPBody body=msgCtx.getEnvelope().getBody();
body.setFirstChild(axiomultil.stringToOM(“”);
} 
捕获(XMLStreamException e){
log.error(例如getStackTrace());
}
Axis2Sender.sendBack(msgCtx);
返回false;
}
返回有效;
}

谢谢你的提示。

我认为payloadFactory可以做你想做的事情。它会将soap主体设置为您指定的内容。有关此转换中介的文档如下所示:

您甚至可以在soap响应中提供有用的信息,如令牌请求url和适当的oAuth2.0请求语法