http.go 720 B

123456789101112131415161718192021222324252627
  1. package client
  2. import (
  3. "github.com/jcmturner/gokrb5/GSSAPI"
  4. "fmt"
  5. "net/http"
  6. "encoding/base64"
  7. )
  8. func (cl *Client) SetKRB5NegotiationHeader(HTTPReq *http.Request, spn string) error {
  9. tkt, skey, err := cl.GetServiceTicket(spn)
  10. if err != nil {
  11. return fmt.Errorf("Could not get service ticket: %v", err)
  12. }
  13. negTokenInit, err := GSSAPI.NewNegTokenInitKrb5(*cl.Config, cl.Credentials.CName, tkt, skey)
  14. if err != nil {
  15. return fmt.Errorf("Could not create NegTokenInit: %v", err)
  16. }
  17. nb, err := negTokenInit.Marshal()
  18. if err != nil {
  19. return fmt.Errorf("Could marshal NegTokenInit: %v", err)
  20. }
  21. hs := "Negotiate " + base64.StdEncoding.EncodeToString(nb)
  22. HTTPReq.Header.Set("Authorization", hs)
  23. return nil
  24. }