code: func (s *APIServer) validateGithubAuthCallback(auth ClientI, w http.ResponseWriter, r *http.Request, p httprouter.Params, version string) (interface{}, error) {
  	var req validateGithubAuthCallbackReq
  	if err := httplib.ReadJSON(r, &req); err != nil {
  		return nil, trace.Wrap(err)
  	}
  	response, err := auth.ValidateGithubAuthCallback(req.Query)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  	raw := githubAuthRawResponse{
  		Username: response.Username,
  		Identity: response.Identity,
  		Cert:     response.Cert,
  		TLSCert:  response.TLSCert,
  		Req:      response.Req,
  	}
  	if response.Session != nil {
  		rawSession, err := services.GetWebSessionMarshaler().MarshalWebSession(
  			response.Session, services.WithVersion(version), services.PreserveResourceID())
  		if err != nil {
  			return nil, trace.Wrap(err)
  		}
  		raw.Session = rawSession
  	}
  	raw.HostSigners = make([]json.RawMessage, len(response.HostSigners))
  	for i, ca := range response.HostSigners {
  		data, err := services.GetCertAuthorityMarshaler().MarshalCertAuthority(
  			ca, services.WithVersion(version), services.PreserveResourceID())
  		if err != nil {
  			return nil, trace.Wrap(err)
  		}
  		raw.HostSigners[i] = data
  	}
  	return &raw, nil
  }
docs: /* validateGithubAuthRequest validates Github auth callback redirect
  
     POST /:version/github/requests/validate
  
     Success response: githubAuthRawResponse
  */