@Override public void onServerInfoResolved(App app, ServerInfo serverInfo) { this.authorizeUrl = parseUrl(this.authorizeUrl,serverInfo); this.tokenUrl = parseUrl(this.tokenUrl,serverInfo); this.tokenInfoUrl = parseUrl(this.tokenInfoUrl,serverInfo); this.userInfoUrl = parseUrl(this.userInfoUrl,serverInfo); this.publicKeyUrl = parseUrl(this.publicKeyUrl,serverInfo); this.logoutUrl = parseUrl(this.logoutUrl,serverInfo); }
/** * Enables oauth2 in current web app. */ default OAuth2Configurator enable() { return setEnabled(true); }
@Override public void handleInvalidToken(Request request, Response response, String desc) { writeError(request, response, HTTP.SC_UNAUTHORIZED, OAuth2Errors.ERROR_INVALID_TOKEN, desc); }
@Override public State preResolveAuthentication(Request request, Response response, AuthenticationContext context) throws Throwable { if(config.isEnabled() && config.isLogin()) { if(isRedirectBackFromServer(request)) { return handler.handleServerRedirectRequest(request, response, context); } } return State.CONTINUE; }
@Override public State preLogout(Request request, Response response, LogoutContext context) throws Throwable { if(config.isEnabled() && config.isLogout()) { if(!isLogoutFromServer(request)) { response.sendRedirect(buildRemoteLogoutUrl(request)); return State.INTERCEPTED; } } return State.CONTINUE; }
@Override public State prePromoteLogin(Request request, Response response, LoginContext context) throws Throwable { if(config.isEnabled() && config.isLogin()) { if(!isRedirectBackFromServer(request)) { context.setLoginUrl(buildLoginUrl(request)); } } return State.CONTINUE; }
@Override public State handleServerRedirectRequest( Request request, Response response, AuthenticationContext context) throws Throwable{ OAuth2Params params = new OAuth2RequestParams(request); if(params.isError()) { return handleOAuth2ServerError(request, response, params); }else{ return handleOAuth2ServerSuccess(request, response, params); } }
protected State handleOAuth2ServerError(Request request, Response response, OAuth2Params params) throws Throwable { if(Strings.isEmpty(config.getErrorView())) { View view = request.getView(config.getErrorView()); //todo : handle null view if(null != view) { view.render(request, response); } return State.INTERCEPTED; } return error(request, response, params.getError(), params.getErrorDescription()); }
protected boolean isInternalOnly() { if(null == internalOnly) { internalOnly = null == config ? false : config.getClientId().equals(OAuth2Client.INTERNAL_CLIENT_ID); } return internalOnly; } }
default String getError() { return getParameter(ERROR); }
protected State error(Request request, Response response, String code, String message) { errorHandler.responseError(request,response, HTTP.Status.INTERNAL_SERVER_ERROR.value(), code, message); return State.INTERCEPTED; }
default boolean isError() { return !Strings.isEmpty(getError()); }
@Override public void handleInvalidRequest(Request request, Response response, String desc) { writeError(request, response, HTTP.SC_BAD_REQUEST, OAuth2Errors.ERROR_INVALID_REQUEST, desc); }
default String getClientId() { return getParameter(CLIENT_ID); }
@Override public void handleInsufficientScope(Request request, Response response, String desc) { writeError(request, response, HTTP.SC_FORBIDDEN, OAuth2Errors.ERROR_INSUFFICIENT_SCOPE, desc); }
default String getCode() { return getParameter(CODE); }
@Override public void responseError(Request request, Response response, int status, String error, String message) { writeError(request, response, status, error, message); }
default String getErrorDescription() { return getParameter(ERROR_DESCRIPTION); }
@Override public void handleServerError(Request request, Response response, Throwable e) { writeError(request, response, HTTP.SC_INTERNAL_SERVER_ERROR, OAuth2Errors.ERROR_SERVER_ERROR, e.getMessage()); }
default String getIdToken() { return getParameter(ID_TOKEN); }