Aktuell kummuniziere ich (Client) bei einem Kunden per HTTP mit einem SAP Rest Service (Server). Die Daten werden per JSON übermittelt. Dazu nutze ich die WebRequest-Klasse.
Demnächst will der Kunde auf HTTPS umstellen und will mir für die Umstellung ein Zertifikat zur Verfügung stellen.
Was bedeutet das für die WebRequest-Klasse? Was muss auf meiner Seite geändert werden.
Nach meinem Verständnis müsste ich eigentlich gar nichts machen, außer die URL bei mir ändern. Was kann ich mit diesem Zertifikat überhaupt machen.
public Task<string> POST(EnumSapMessageDef messageType, string url, string jsonContent, bool isRetry = false)
{
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
var encoding = new UTF8Encoding();
var byteArray = encoding.GetBytes(jsonContent);
request.ContentLength = byteArray.Length;
request.ContentType = @"application/json";
try
{
using (var dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}
}
catch (Exception )
{
// Fehlerbehandlung ....
}
return null;
}
Hi,
naja - mit dem Zertifikat kannst du ggf. einbauen, dass genau dieses eine Zertifikat zugelassen ist - viel mehr aber auch nicht. Da liegst du schon richtig.
Taipi88 hat zur Frage alles gesagt; nennt sich Certificate Pinning.
PS: Deine Methode an für sich ist im Sinne von async/await aber nicht korrekt implementiert.
Korrekt wäre GetRequestStreamAsync
So ist die Methode ein klassischer Pitfall und kann zum Deadlock und damit Absturz der Anwendung führen.
Wen möglich sollte man zudem mit dem HttpClient arbeiten. HttpWebRequest sollte nur verwendet werden, wenn absolut notwendig.
using (var call = await _httpClient.GetAsync(url))
{
string content = await call.Content.ReadAsStringAsync();
return content;
}
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ok, das bedeutet auf Clientseite also keine Änderungen. Alles läuft wie vorher. Nur die URL muss geändert werden.
@Abt
Du hast Recht, da ist noch Optimierungsbedarf. Der Code stellt aber auch nur einen Teil der Funktion dar, die ist noch etwas länger.
Die Kommunikation läuft dazu auch etwas länger ohne ein Problem, da bin ich mit Verbesserungen immer ganz vorsichtig. Never change...
Dein Argument ist einfach nur russisches Roulette.
Nur eine Frage, bis es knallt.
Aber keiner kann Dich zwingen korrekten Code zu schreiben.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code