|
@@ -1,13 +1,13 @@
|
|
|
package client
|
|
package client
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
- "github.com/jcmturner/gokrb5/GSSAPI"
|
|
|
|
|
|
|
+ "encoding/base64"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
|
|
+ "github.com/jcmturner/gokrb5/GSSAPI"
|
|
|
"net/http"
|
|
"net/http"
|
|
|
- "encoding/base64"
|
|
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-func (cl *Client) SetKRB5NegotiationHeader(HTTPReq *http.Request, spn string) error {
|
|
|
|
|
|
|
+func (cl *Client) SetSPNEGOHeader(HTTPReq *http.Request, spn string) error {
|
|
|
tkt, skey, err := cl.GetServiceTicket(spn)
|
|
tkt, skey, err := cl.GetServiceTicket(spn)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return fmt.Errorf("Could not get service ticket: %v", err)
|
|
return fmt.Errorf("Could not get service ticket: %v", err)
|
|
@@ -16,12 +16,16 @@ func (cl *Client) SetKRB5NegotiationHeader(HTTPReq *http.Request, spn string) er
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return fmt.Errorf("Could not create NegTokenInit: %v", err)
|
|
return fmt.Errorf("Could not create NegTokenInit: %v", err)
|
|
|
}
|
|
}
|
|
|
- nb, err := negTokenInit.Marshal()
|
|
|
|
|
|
|
+ SPNEGOToken := GSSAPI.SPNEGO{
|
|
|
|
|
+ Init: true,
|
|
|
|
|
+ NegTokenInit: negTokenInit,
|
|
|
|
|
+ }
|
|
|
|
|
+ nb, err := SPNEGOToken.Marshal()
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- return fmt.Errorf("Could marshal NegTokenInit: %v", err)
|
|
|
|
|
|
|
+ return fmt.Errorf("Could marshal SPNEGO: %v", err)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
hs := "Negotiate " + base64.StdEncoding.EncodeToString(nb)
|
|
hs := "Negotiate " + base64.StdEncoding.EncodeToString(nb)
|
|
|
HTTPReq.Header.Set("Authorization", hs)
|
|
HTTPReq.Header.Set("Authorization", hs)
|
|
|
return nil
|
|
return nil
|
|
|
-}
|
|
|
|
|
|
|
+}
|