You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

source_metadata.go 780B

1234567891011121314151617181920212223242526272829303132
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package saml
  4. import (
  5. "encoding/xml"
  6. "fmt"
  7. "net/http"
  8. )
  9. // Metadata redirects request/response pair to authenticate against the provider
  10. func (source *Source) Metadata(request *http.Request, response http.ResponseWriter) error {
  11. samlRWMutex.RLock()
  12. defer samlRWMutex.RUnlock()
  13. if _, ok := providers[source.authSource.Name]; !ok {
  14. return fmt.Errorf("provider does not exist")
  15. }
  16. metadata, err := providers[source.authSource.Name].samlSP.Metadata()
  17. if err != nil {
  18. return err
  19. }
  20. buf, err := xml.Marshal(metadata)
  21. if err != nil {
  22. return err
  23. }
  24. response.Header().Set("Content-Type", "application/samlmetadata+xml; charset=utf-8")
  25. _, _ = response.Write(buf)
  26. return nil
  27. }