我正在按照本指南https://docs.wso2.com/display/AM190/Writing+Custom+Handlers为wso2-am实现自定义身份验证处理程序 但是当我的身份验证处理程序返回false时,不清楚如何处理这种情况。 handleRequest的示例代码是
public boolean handleRequest(MessageContext messageContext) {
try {
if (authenticate(messageContext)) {
return true;
}
} catch (APISecurityException e) {
e.printStackTrace();
}
return false;
}
如果我尝试使用有效凭据调用API,一切顺利(方法返回true),我得到“HTTP 200 OK”响应。如果我尝试使用无效凭证,则该方法返回false,但我得到一个HTTP 202 ACCEPTED“响应。我想收到另一个响应代码(例如400)。如何处理此身份验证失败路径?
谢谢。
答案 0 :(得分:0)
理想情况下,您需要使用消息上下文调用handleAuthFaliure方法。
private void handleAuthFailure(MessageContext messageContext, APISecurityException e)
当您调用该方法时,请创建APISecurityException对象(如下所示)并传递它。然后将从那里挑选错误代码和错误消息并自动向客户端发送错误(默认情况下,我们返回401以获取安全性异常,如果已定义,则发送已定义的错误代码和消息)。
public class APISecurityException extends Exception {
private int errorCode;
public APISecurityException(int errorCode, String message) {
super(message);
this.errorCode = errorCode;
}
public APISecurityException(int errorCode, String message, Throwable cause) {
super(message, cause);
this.errorCode = errorCode;
}
public int getErrorCode() {
return errorCode;
}
}
希望这对你有用。
由于
sanjeewa。