diff --git a/pkg/duo/duo.go b/pkg/duo/duo.go index b70f3ed6e..bbf02bd60 100644 --- a/pkg/duo/duo.go +++ b/pkg/duo/duo.go @@ -253,9 +253,9 @@ func getTxResultJson(httpClient *provider.HTTPClient, duoHost string, sid string } func VerifyDuoMfa(httpClient *provider.HTTPClient, loginDetails *creds.LoginDetails, parent string, duoHost string, duoSignature string) (string, error) { - duoSignature = strings.Split(duoSignature, ":")[0] + sigParts := strings.Split(duoSignature, ":") - session, err := getDuoSession(httpClient, parent, duoHost, duoSignature) + session, err := getDuoSession(httpClient, parent, duoHost, sigParts[0]) if err != nil { return "", errors.Wrap(err, "error fetching Duo SID") } @@ -290,5 +290,7 @@ func VerifyDuoMfa(httpClient *provider.HTTPClient, loginDetails *creds.LoginDeta return "", errors.Wrap(err, "error getting Duo result json") } - return resultJson, nil + cookie := gjson.Get(resultJson, "response.cookie").String() + + return fmt.Sprintf("%s:%s", cookie, sigParts[1]), nil } diff --git a/pkg/provider/adfs/adfs.go b/pkg/provider/adfs/adfs.go index 76f688501..2ae5627cf 100644 --- a/pkg/provider/adfs/adfs.go +++ b/pkg/provider/adfs/adfs.go @@ -11,7 +11,6 @@ import ( "github.com/PuerkitoBio/goquery" "github.com/pkg/errors" - "github.com/tidwall/gjson" "github.com/versent/saml2aws/v2/pkg/cfg" "github.com/versent/saml2aws/v2/pkg/creds" @@ -187,7 +186,7 @@ func (ac *Client) Authenticate(loginDetails *creds.LoginDetails) (string, error) return samlAssertion, errors.New("context field not found") } - duoJson, err := duo.VerifyDuoMfa(ac.client, loginDetails, authSubmitURL, duoHost, duoSigRequest) + duoCookie, err := duo.VerifyDuoMfa(ac.client, loginDetails, authSubmitURL, duoHost, duoSigRequest) if err != nil { return samlAssertion, errors.Wrap(err, "error in Duo MFA process") } @@ -195,7 +194,7 @@ func (ac *Client) Authenticate(loginDetails *creds.LoginDetails) (string, error) duoForm := url.Values{} duoForm.Add("Context", duoContext) duoForm.Add("AuthMethod", "DuoAdfsAdapter") - duoForm.Add("sig_response", gjson.Get(duoJson, "response.cookie").String()) + duoForm.Add("sig_response", duoCookie) doc, err = ac.submit(authSubmitURL, duoForm) case UNKNOWN: