in pkg/provider/aad/aad.go [257:299]
func (ac *Client) requestGetCredentialType(refererUrl string, loginDetails *creds.LoginDetails, convergedResponse *ConvergedResponse) (GetCredentialTypeResponse, *http.Response, error) {
var res *http.Response
var getCredentialTypeResponse GetCredentialTypeResponse
reqBodyObj := GetCredentialTypeRequest{
Username: loginDetails.Username,
IsOtherIdpSupported: true,
CheckPhones: false,
IsRemoteNGCSupported: false,
IsCookieBannerShown: false,
IsFidoSupported: false,
OriginalRequest: convergedResponse.SCtx,
FlowToken: convergedResponse.SFT,
}
reqBodyJson, err := json.Marshal(reqBodyObj)
if err != nil {
return getCredentialTypeResponse, res, errors.Wrap(err, "failed to build GetCredentialType request JSON")
}
req, err := http.NewRequest("POST", convergedResponse.URLGetCredentialType, strings.NewReader(string(reqBodyJson)))
if err != nil {
return getCredentialTypeResponse, res, errors.Wrap(err, "error building GetCredentialType request")
}
req.Header.Add("canary", convergedResponse.APICanary)
req.Header.Add("client-request-id", convergedResponse.CorrelationID)
req.Header.Add("hpgact", fmt.Sprint(convergedResponse.Hpgact))
req.Header.Add("hpgid", fmt.Sprint(convergedResponse.Hpgid))
req.Header.Add("hpgrequestid", convergedResponse.SessionID)
req.Header.Add("Referer", refererUrl)
res, err = ac.client.Do(req)
if err != nil {
return getCredentialTypeResponse, res, errors.Wrap(err, "error retrieving GetCredentialType results")
}
err = json.NewDecoder(res.Body).Decode(&getCredentialTypeResponse)
if err != nil {
return getCredentialTypeResponse, res, errors.Wrap(err, "error decoding GetCredentialType results")
}
return getCredentialTypeResponse, res, nil
}