Logo REST Servisi ile güvenli iletişim kurabilmek için server-client arasında SSL bağlantı kurulabilir. REST servisin öndeğer kurulumu bu şekildedir, Logo REST Servis Ayarları  kısmında anlatıldığı şekilde değiştirilebilir.

Rest serviste onaylanmış bir sertifika değil self signed bir sertifika kullanıyoruz. Buradaki amacımız aradaki iletişimin şifrelenmesidir.
Dolayısıyla kullandığımız sertifika client tarafında validate edilemeyeceğinden aşağıdaki şekilde sertifika bilgileri pas geçilebilir.

ValidateCertificate
public static bool ValidateCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    //server sertifikası direkt olarak onaylanıyor
    return true;
}
public string getAccessToken(string url, string userName, string password, string firmNr)
{
    try
    {
        HttpWebRequest req = WebRequest.Create(new Uri(url)) as HttpWebRequest;
        req.Method = "POST";
        req.ContentType = "application/json";
        req.Accept = "application/json";
        req.Headers.Add("Authorization", "Basic " 
               + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(clientId + ":" + clientSecret)));
        req.Credentials = CredentialCache.DefaultCredentials;
        
        //sertifikanın validate edildiği fonksiyonumuza yönlendiriyoruz
        ServicePointManager.ServerCertificateValidationCallback 
               += new System.Net.Security.RemoteCertificateValidationCallback(ValidateCertificate);
        
        byte[] formData = UTF8Encoding.UTF8.GetBytes("grant_type=password"
            + "&username=" + userName
            + "&firmno=" + firmNr
            + "&password=" + password);
        req.ContentLength = formData.Length;
        using (Stream post = req.GetRequestStream())
        {
            post.Write(formData, 0, formData.Length);
        }
        string result = null;
        using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
        {
            StreamReader reader = new StreamReader(resp.GetResponseStream());
            result = reader.ReadToEnd();
        }
        dynamic j = JsonConvert.DeserializeObject(result);
        accessToken = j.access_token;
    }
    catch (Exception){}
    return accessToken;
}
Telif HakkıKullanım KoşullarıGizlilik
Copyright © 2018 Logo Yazılım