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