github.com/versent/saml2aws@v2.17.0+incompatible/pkg/provider/adfs2/ntlm.go (about) 1 package adfs2 2 3 import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 7 "net/http" 8 9 "github.com/PuerkitoBio/goquery" 10 "github.com/pkg/errors" 11 "github.com/versent/saml2aws/pkg/creds" 12 ) 13 14 func (ac *Client) authenticateNTLM(loginDetails *creds.LoginDetails) (string, error) { 15 16 ac.client.CheckRedirect = func(req *http.Request, via []*http.Request) error { 17 req.SetBasicAuth(loginDetails.Username, loginDetails.Password) 18 return nil 19 } 20 21 url := fmt.Sprintf("%s/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=%s", loginDetails.URL, ac.idpAccount.AmazonWebservicesURN) 22 req, err := http.NewRequest("GET", url, nil) 23 if err != nil { 24 return "", err 25 } 26 req.SetBasicAuth(loginDetails.Username, loginDetails.Password) 27 28 res, err := ac.client.Do(req) 29 if err != nil { 30 return "", errors.Wrap(err, "error retieving login form") 31 } 32 33 data, err := ioutil.ReadAll(res.Body) 34 if err != nil { 35 return "", errors.Wrap(err, "error retieving body") 36 } 37 38 doc, err := goquery.NewDocumentFromReader(bytes.NewBuffer(data)) 39 if err != nil { 40 return "", errors.Wrap(err, "error parsing document") 41 } 42 43 return extractSamlAssertion(doc) 44 }