Webservice

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.

Nun zur Frage:

  1. Ist dies sinnvoll?
  2. Wenn nicht, welche Alternativen gibt es?

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.

Und ja, der Service ist zum Entwickeln gedacht.

Naja, wenn der Anbieter eine Best-Practice vorgibt, dann solltest du dich auch daran halten :wink:
Wenn du einen Proxy nimmst, dann solltest du deine Anwendung aber gegen diesen Authentifizieren. Am besten sogar auf pro-user-Basis.

Gut, nur kann ich nen Webservice mot spring schreiben und den dann da einfach hochladen oder wie?

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:

  1. dein Key gerät in die freie Wildbahn -> böse Leute rufen mit deinem Key den Webservice auf und machen komische Sachen

  2. 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

ch habe ein Verständnisproblem mit folgendem Code-Beispiel:

Java Code:

interface ColorA{
    attribute short red, green, blue;
};
 
struct ColorB{
    short red, green, blue;
};
 
interface MyCar{
    ColorA getA();
    void putA(in ColorA otto);
    ColorB getB();
    void putB(in ColorB otto);
};

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?

MFG Malte.

Hast Du Dich im Thread versehen?