2015-11-05 106 views
1

我正在按照本指南實施wso2-am的自定義身份驗證處理程序https://docs.wso2.com/display/AM190/Writing+Custom+Handlers 但我不清楚當我的身份驗證處理程序返回false時如何處理大小寫。這個handleRequest的示例代碼WSO2 API管理器 - 處理使用自定義身份驗證器的身份驗證失敗

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

您絕對可以處理故障情況。看看處理程序中處理API Manager的節流場景的[1]。 [1] - https://github.com/wso2/carbon-apimgt/blob/release-1.10.x/components/apimgt/org.wso2.carbon.apimgt.gateway/src/main/java/org/ WSO2 /碳/ apimgt /網關/處理/節流/ APIThrottleHandler.java#L210-L263 – harsha89

回答

0

在理想情況下需要調用handleAuthFaliure方法與消息上下文。

private void handleAuthFailure(MessageContext messageContext, APISecurityException e) 

當調用該方法,請創建APISecurityException對象(如下所列),並通過它,然後錯誤代碼和錯誤信息將被從拾取在那裏,並自動發送錯誤給客戶端(默認情況下,我們返回401安全excep tions和如果定義然後發送定義的錯誤代碼和消息)。

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。