code: func executeSAMLStringTemplate(raw string, assertion map[string]string) (string, error) {
  	tmpl, err := template.New("dynamic-roles").Parse(raw)
  	if err != nil {
  		return "", trace.Wrap(err)
  	}
  	var buf bytes.Buffer
  	err = tmpl.Execute(&buf, assertion)
  	if err != nil {
  		return "", trace.Wrap(err)
  	}
  
  	return buf.String(), nil
  }
docs: // executeSAMLStringTemplate takes a raw template string and a map of
  // assertions to execute a template and generate output. Because the data
  // structure used to execute the template is a map, the format of the raw
  // string is expected to be {{index . "key"}}. See
  // https://golang.org/pkg/text/template/ for more details.