code: protected String buildRedirectUri(HttpServletRequest req, HttpServletResponse resp){
          String baseUrl = Urls.getServerBaseUrl(req);
  
          String requestUri = parseRequestUriWithoutContextPath(req);
          String current = baseUrl + getContextPathOfReverseProxy(req) + requestUri;
  
          String queryString = req.getQueryString();
          if(Strings.isEmpty(queryString)){
              if(client.getConfig().getDefaultReturnUrl() != null && !client.getConfig().getDefaultReturnUrl().isEmpty()){
                  current = Urls.appendQueryString(current,"return_url",client.getConfig().getDefaultReturnUrl());
              }
              return current;
          }else {
              current = current+"?"+queryString;
              if(!Urls.parseQueryString(current).containsKey("return_url")){
                  if(client.getConfig().getDefaultReturnUrl() != null && !client.getConfig().getDefaultReturnUrl().isEmpty()){
                      current = Urls.appendQueryString(current,"return_url",client.getConfig().getDefaultReturnUrl());
                  }
              }
              return current;
          }
      }
docs: 构造SSO登录完成后的回调url，一般情况下，在注册SSO应用的时候，需要保证这个uri可以通过SSO的验证。
  这个方法构造的url一般是如下格式：
  
  <pre>
  http(s)://${domain}:${port}/${contextPath}/ssoclient/login?${queryString}
  示例：
  http://www.example.com:80/demo/ssoclient/login?name=admin
  </pre>
  
  一般情况下要求注册client的时候，填写的回调地址(redirect_uri)必须能够验证这里构造的url实现自动完成登录的过程。
  
  如果由于其他原因，回调地址不能设置为匹配这个地址的表达式，请重写这个方法，并自己处理登录完成后的回调请求。