Example usage for com.amazonaws.services.cognitoidp.model NotAuthorizedException getMessage

List of usage examples for com.amazonaws.services.cognitoidp.model NotAuthorizedException getMessage

Introduction

In this page you can find the example usage for com.amazonaws.services.cognitoidp.model NotAuthorizedException getMessage.

Prototype

@Override
    public String getMessage() 

Source Link

Usage

From source file:com.kdgregory.example.cognito.servlets.ValidatedAction.java

License:Apache License

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String accessToken = null;/*from ww  w.  ja  va  2s .c o m*/
    String refreshToken = null;

    logger.debug("attempting validation");

    Cookie[] cookies = request.getCookies();
    if (cookies == null) {
        logger.warn("request from {} did not have cookies", request.getRemoteAddr());
        reportResult(response, Constants.ResponseMessages.NOT_LOGGED_IN);
        return;
    }

    for (Cookie cookie : cookies) {
        if (cookie.getName().equals(Constants.CookieNames.ACCESS_TOKEN))
            accessToken = cookie.getValue();
        if (cookie.getName().equals(Constants.CookieNames.REFRESH_TOKEN))
            refreshToken = cookie.getValue();
    }

    if (tokenCache.checkToken(accessToken)) {
        logger.debug("token was found in cache, not going to AWS");
        reportResult(response, Constants.ResponseMessages.LOGGED_IN);
        return;
    }

    try {
        GetUserRequest authRequest = new GetUserRequest().withAccessToken(accessToken);
        GetUserResult authResponse = cognitoClient.getUser(authRequest);

        logger.debug("successful validation for {}", authResponse.getUsername());
        tokenCache.addToken(accessToken);
        reportResult(response, Constants.ResponseMessages.LOGGED_IN);
    } catch (NotAuthorizedException ex) {
        if (ex.getErrorMessage().equals("Access Token has expired")) {
            attemptRefresh(refreshToken, response);
        } else {
            logger.warn("exception during validation: {}", ex.getMessage());
            reportResult(response, Constants.ResponseMessages.NOT_LOGGED_IN);
        }
    } catch (TooManyRequestsException ex) {
        logger.warn("caught TooManyRequestsException, delaying then retrying");
        ThreadUtil.sleepQuietly(250);
        doPost(request, response);
    }
}