github.com/saracen/git-lfs@v2.5.2+incompatible/lfsapi/ntlm_auth_windows.go (about) 1 // +build windows 2 3 package lfsapi 4 5 import ( 6 "net/http" 7 8 "github.com/alexbrainman/sspi" 9 "github.com/alexbrainman/sspi/ntlm" 10 ) 11 12 func (c *Client) ntlmAuthenticateRequest(req *http.Request, creds *ntmlCredentials) (*http.Response, error) { 13 var sspiCreds *sspi.Credentials 14 var err error 15 if creds == nil { 16 sspiCreds, err = ntlm.AcquireCurrentUserCredentials() 17 } else { 18 sspiCreds, err = ntlm.AcquireUserCredentials(creds.domain, creds.username, creds.password) 19 } 20 21 if err != nil { 22 return nil, err 23 } 24 defer sspiCreds.Release() 25 26 secctx, negotiate, err := ntlm.NewClientContext(sspiCreds) 27 if err != nil { 28 return nil, err 29 } 30 defer secctx.Release() 31 32 chRes, challengeMsg, err := c.ntlmSendType1Message(req, negotiate) 33 if err != nil { 34 return chRes, err 35 } 36 37 authenticateMsg, err := secctx.Update(challengeMsg) 38 if err != nil { 39 return nil, err 40 } 41 42 return c.ntlmSendType3Message(req, authenticateMsg) 43 }