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;
}
Copyright © 2018 Logo Yazılım