code: func (idp *IdentityProvider) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  	metadataURL, err := url.Parse(idp.MetadataURL)
  	if err != nil {
  		panic(err)
  	}
  	ssoURL, err := url.Parse(idp.SSOURL)
  	if err != nil {
  		panic(err)
  	}
  
  	switch r.URL.Path {
  	case metadataURL.Path:
  		idp.ServeMetadata(w, r)
  	case ssoURL.Path:
  		idp.ServeSSO(w, r)
  	default:
  		http.NotFound(w, r)
  	}
  }
docs: // ServeHTTP implements the http.Handler interface to serve the IDP metadata and
  // SSO.