code: func (s *AuthServer) GenerateToken(req GenerateTokenRequest) (string, error) {
  	if err := req.CheckAndSetDefaults(); err != nil {
  		return "", trace.Wrap(err)
  	}
  	token, err := services.NewProvisionToken(req.Token, req.Roles, s.clock.Now().UTC().Add(req.TTL))
  	if err != nil {
  		return "", trace.Wrap(err)
  	}
  	if err := s.Provisioner.UpsertToken(token); err != nil {
  		return "", trace.Wrap(err)
  	}
  	return req.Token, nil
  }
docs: // GenerateToken generates multi-purpose authentication token