修正验证签名参数错误
This commit is contained in:
+28
-13
@@ -56,18 +56,34 @@ public class WeixinRequestHandler extends
|
||||
protected void channelRead0(ChannelHandlerContext ctx, WeixinRequest request)
|
||||
throws WeixinException {
|
||||
final AesToken aesToken = request.getAesToken();
|
||||
if (aesToken == null) {
|
||||
if (aesToken == null
|
||||
|| (StringUtil.isBlank(request.getSignature()) && StringUtil
|
||||
.isBlank(request.getMsgSignature()))) {
|
||||
ctx.writeAndFlush(HttpUtil.createHttpResponse(BAD_REQUEST))
|
||||
.addListener(ChannelFutureListener.CLOSE);
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* 公众平台:无论Get,Post都带signature参数,当开启aes模式时带msg_signature参数
|
||||
* 企业号:无论Get,Post都带msg_signature参数
|
||||
**/
|
||||
if (request.getMethod().equals(HttpMethod.GET.name())) {
|
||||
if (MessageUtil.signature(aesToken.getToken(),
|
||||
request.getTimeStamp(), request.getNonce()).equals(
|
||||
request.getSignature())) {
|
||||
if (!StringUtil.isBlank(request.getSignature())
|
||||
&& MessageUtil.signature(aesToken.getToken(),
|
||||
request.getTimeStamp(), request.getNonce()).equals(
|
||||
request.getSignature())) {
|
||||
ctx.write(new SingleResponse(request.getEchoStr()));
|
||||
return;
|
||||
}
|
||||
if (!StringUtil.isBlank(request.getMsgSignature())
|
||||
&& MessageUtil.signature(aesToken.getToken(),
|
||||
request.getTimeStamp(), request.getNonce(),
|
||||
request.getEchoStr()).equals(
|
||||
request.getMsgSignature())) {
|
||||
ctx.write(new SingleResponse(MessageUtil.aesDecrypt(null,
|
||||
aesToken.getAesKey(), request.getEchoStr())));
|
||||
return;
|
||||
}
|
||||
ctx.writeAndFlush(HttpUtil.createHttpResponse(FORBIDDEN))
|
||||
.addListener(ChannelFutureListener.CLOSE);
|
||||
return;
|
||||
@@ -80,15 +96,14 @@ public class WeixinRequestHandler extends
|
||||
.addListener(ChannelFutureListener.CLOSE);
|
||||
return;
|
||||
}
|
||||
if (request.getEncryptType() == EncryptType.AES) {
|
||||
if (!MessageUtil.signature(aesToken.getToken(),
|
||||
request.getTimeStamp(), request.getNonce(),
|
||||
request.getEncryptContent()).equals(
|
||||
request.getMsgSignature())) {
|
||||
ctx.writeAndFlush(HttpUtil.createHttpResponse(FORBIDDEN))
|
||||
.addListener(ChannelFutureListener.CLOSE);
|
||||
return;
|
||||
}
|
||||
if (request.getEncryptType() == EncryptType.AES
|
||||
&& !MessageUtil.signature(aesToken.getToken(),
|
||||
request.getTimeStamp(), request.getNonce(),
|
||||
request.getEncryptContent()).equals(
|
||||
request.getMsgSignature())) {
|
||||
ctx.writeAndFlush(HttpUtil.createHttpResponse(FORBIDDEN))
|
||||
.addListener(ChannelFutureListener.CLOSE);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
ctx.writeAndFlush(HttpUtil.createHttpResponse(METHOD_NOT_ALLOWED))
|
||||
|
||||
@@ -159,7 +159,7 @@ public final class MessageUtil {
|
||||
throw new WeixinException("-40008", "xml内容不合法:" + e.getMessage());
|
||||
}
|
||||
// 校验appId是否一致
|
||||
if (!fromAppId.trim().equals(appId)) {
|
||||
if (appId != null && !fromAppId.trim().equals(appId)) {
|
||||
throw new WeixinException("-40005", "校验AppID失败,expect " + appId
|
||||
+ ",but actual is " + fromAppId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user