Невозможно отправить аутентификацию push okta (используя API) с помощью HttpWebRequest C # - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь встроить аутентификацию okta push в мое приложение c #

, когда я вызываю API ("/ api / v1 / users / userid / factor / factorid / verify"), используя HttpWebRequest я получаю ноль ответ и далее получаю исключение как "Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера." , но в то же время он отлично работает с REST API

 public String SendNotification(String pUserID, List<OTP_Devices> pOTP_Devices)
    {
        try
        {
            String ReturnData = "";

            String FactorID = pOTP_Devices.First(s => s.FactorType == "push").ID;
            String URL = SubDomain + "/api/v1/users/" + pUserID + "/factors/" + FactorID + "/verify";
            RootObject tmpRootObject = new RootObject();
            HttpWebResponse lHttpWebResponse = null;
            HttpWebRequest lHttpWebRequest = (HttpWebRequest)WebRequest.Create(URL);

            lHttpWebRequest.Method = "POST";
            lHttpWebRequest.Accept = "application/json";
            lHttpWebRequest.ContentType = "application/json";
            lHttpWebRequest.Headers.Add("authorization", "SSWS " + APIKey);
            try
            {
                lHttpWebResponse = (HttpWebResponse)lHttpWebRequest.GetResponse();
            }
            catch (WebException ex)
            {
                lHttpWebResponse = (HttpWebResponse)ex.Response;
                if (lHttpWebResponse == null)
                {
                    throw ex;
                }
            }
            ReturnData = new StreamReader(lHttpWebResponse.GetResponseStream()).ReadToEnd();
            tmpRootObject = JSON.Decode<RootObject>(ReturnData);
            ReturnData = tmpRootObject._Links.Poll.Href;
            return ReturnData;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

     public String SendNotification(String pUserID, List<OTP_Devices> pOTP_Devices)
    {
        String ReturnData = "";
        try
        {
            String FactorID = pOTP_Devices.First(s => s.FactorType == "push").ID;
            String URL = SubDomain + "/api/v1/users/" + pUserID + "/factors/" + FactorID + "/verify";
            RestClient lRestClient = new RestClient(URL);
            RestRequest lRestRequest = new RestRequest(Method.POST);
            lRestRequest.AddHeader("Accept", "application/json");
            lRestRequest.AddHeader("Content-Type", "application/json");
            lRestRequest.AddHeader("authorization", "SSWS " + APIKey);
            IRestResponse tmpRestResponse = lRestClient.Execute(lRestRequest);
            String ResponseContent = tmpRestResponse.Content;
            RootObject lRootObject = JSON.Decode<RootObject>(ResponseContent);
            ReturnData = lRootObject._Links.Poll.Href;
        }
        catch (Exception ex)
        {
            throw ex;
        }

        return ReturnData;
    }
...