docs: @Override
      public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
          String clientId = request.getParameter(OAuth2Utils.CLIENT_ID);
          String redirectUri = request.getParameter(OAuth2Utils.REDIRECT_URI);
          String[] responseTypes = ofNullable(request.getParameter(OAuth2Utils.RESPONSE_TYPE)).map(rt -> rt.split(" ")).orElse(new String[0]);
  
          ClientDetails client;
          try {
              client = getClientServiceExtention().loadClientByClientId(clientId, IdentityZoneHolder.get().getId());
          } catch (ClientRegistrationException e) {
              logger.debug("[prompt=none] Unable to look up client for client_id=" + clientId, e);
              response.setStatus(HttpStatus.BAD_REQUEST.value());
              return;
          }
  
          Set<String> redirectUris = ofNullable(client.getRegisteredRedirectUri()).orElse(EMPTY_SET);
  
          //if the client doesn't have a redirect uri set, the parameter is required.
          if (redirectUris.size() == 0 && !hasText(redirectUri)) {
              logger.debug("[prompt=none] Missing redirect_uri");
              response.setStatus(HttpStatus.BAD_REQUEST.value());
              return;
          }
  
          String resolvedRedirect;
          try {
              resolvedRedirect = redirectResolver.resolveRedirect(redirectUri, client);
          } catch (RedirectMismatchException rme) {
              logger.debug("[prompt=none] Invalid redirect " + redirectUri + " did not match one of the registered values");
              response.setStatus(HttpStatus.BAD_REQUEST.value());
              return;
          }
  
          HttpHost httpHost = URIUtils.extractHost(URI.create(resolvedRedirect));
          String sessionState = openIdSessionStateCalculator.calculate("", clientId, httpHost.toURI());
          boolean implicit = stream(responseTypes).noneMatch("code"::equalsIgnoreCase);
          String redirectLocation;
          String errorCode = authException instanceof InteractionRequiredException ? "interaction_required" : "login_required";
          if (implicit) {
              redirectLocation = addFragmentComponent(resolvedRedirect, "error="+ errorCode);
              redirectLocation = addFragmentComponent(redirectLocation, "session_state=" + sessionState);
          } else {
              redirectLocation = addQueryParameter(resolvedRedirect, "error", errorCode);
              redirectLocation = addQueryParameter(redirectLocation, "session_state", sessionState);
          }
  
          response.sendRedirect(redirectLocation);
      }