WSO2 API Manager - 使用Custom Authenticator处理身份验证失败

时间:2015-11-05 09:07:28

标签: authentication wso2 wso2-am

我正在按照本指南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)。如何处理此身份验证失败路径?

谢谢。

1 个答案:

答案 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。