code: func (sp *ServiceProvider) Parse(w http.ResponseWriter, r *http.Request) (*Assertion, error) {
  	allowIdPInitiated := ""
  	possibleRequestIDs := []string{allowIdPInitiated}
  
  	// Find the request id that relates to this RelayState.
  	relayState := r.PostFormValue("RelayState")
  	if sp.cookieSecret() != nil && relayState != "" {
  		cookieName := fmt.Sprintf("saml_%s", relayState)
  		cookie, err := r.Cookie(cookieName)
  		if err != nil {
  			return nil, fmt.Errorf("cannot find %s cookie", cookieName)
  		}
  
  		// Verify the integrity of the cookie.
  		state, err := jwt.Parse(cookie.Value, func(t *jwt.Token) (interface{}, error) {
  			return sp.cookieSecret(), nil
  		})
  		if err != nil || !state.Valid {
  			return nil, fmt.Errorf("could not decode state JWT: %v", err)
  		}
  
  		claims := state.Claims.(jwt.MapClaims)
  		id := claims["id"].(string)
  
  		possibleRequestIDs = append(possibleRequestIDs, id)
  
  		// delete the cookie
  		cookie.Value = ""
  		cookie.Expires = time.Time{}
  		http.SetCookie(w, cookie)
  	}
  
  	samlResponse := r.PostFormValue("SAMLResponse")
  	return sp.ParseSAMLResponse(samlResponse, possibleRequestIDs)
  }
docs: // Parse parses the SAMLResponse