Ich bin dabei, ne kleine App zu schreiben. Diese greift auf einen Webservice zu, der aber zu jeder Anfrage einen Key braucht. Nun schreibe ich ungerne meinen Key da rein. Daher wollte ich den Webservice hinter einen Webservice verbergen, um somit meinen Key geheim zu halten. Als Hoster gibt es ja sowas wie mashape oder so.
Die beste Lösung ist natürlich, wenn du einen Clientkey hast. Was für ein Webservice ist das denn? Wenn er nicht dazu gedacht ist, dass du eine Anwendung damit entwickelst, die du weitergeben kannst, dann müsstest du deinen Ansatz vielleicht nochmal überdenken.
Einen Proxy würde ich auf gar keinen Fall aufsetzen. Zum einen reduziert das die Erreichbarkeit. Außerdem könntest du Probleme mit dem Anbieter des Webservice bekommen, weil du sozusagen einen offenen Zugangspunkt bietest.
Der Anbieter selbst weisst auch darauf hin, dass der Key nicht preisgegeben werden soll und am besten die Anfragen über einen eigenen Server laufen sollen, der den Key kennt.
Naja, wenn der Anbieter eine Best-Practice vorgibt, dann solltest du dich auch daran halten
Wenn du einen Proxy nimmst, dann solltest du deine Anwendung aber gegen diesen Authentifizieren. Am besten sogar auf pro-user-Basis.
Für einen Proxy würde ich an deiner Stelle nicht unbedingt gleich Spring MVC bemühen, außer du kennst dich schon gut mit Spring aus.
Alternativ reicht auch ein einfaches Servlet. Du brauchst natürlich einen Server, auf dem du das laufen lassen kannst.
Ein Proxy könnte aber auch in php geschrieben sein. Da wirst du, falls du keinen eigenen Server hast, leichter an günstigen Webspace kommen.
Welche Server-Infrastruktur ist überhaupt vorhanden.
Du hast einen Key für einen Webservice, das ist ja erstmal nur ein Endpoint
Hast du selbst überhaupt einen Server? Eventuell einen JEE-Server, dann wäre so ein “Proxy” ja schnell zusammengeklickt und implementiert?
Ich frage mich allerdings, was das für einen Sinn haben soll:
dein Key gerät in die freie Wildbahn -> böse Leute rufen mit deinem Key den Webservice auf und machen komische Sachen
dein Proxy ist selbst ein Webservice in der freien Wildbahn -> böse Leute rufen ohne deinen Key deinen Proxy auf und der mit deinem Key den Webservice auf und machen komische Sachen
so ganz klar ist mir nicht, was du genau erreichen willst
Wo genau liegt der Unterschied zwischen getA/putA, getB/putB? Compiliert erhalte ich folgendes:
Java Code:
public interface MyCarOperations
{
ColorA getA ();
void putA (ColorA otto);
ColorB getB ();
void putB (ColorB otto);
} // interface MyCarOperations
Ich bin mir nicht sicher, aber ich denke der Unterschied liegt darin, dass ColorA zu einem Java Interface mit dem gleichen Namen transformiert wird und
ColorB in eine Klasse mit dem gleichen Namen und für jedes Feld innerhalb der Struktur ein Datenfeld des entsprechenden Typs.
Aber wie wirkt sich das nun auf getA/putA, getB/putB aus?