WebService, was darf der Client alles sehen

Generic1

Top Contributor
Hallo,

ich hätte nochmal eine Frage zu WebServices. Der WebService meiner Applikation bietet alle Methoden um einen Client für meine Applikation zu schreiben, sprich wenn ich die verschiedenen MEethoden des WS aufrufe bekomme ich die verschiedenen Results zurück -> so wie halt eine WS funktionieren soll.

Was ich jetzt machen möchte ist, dass verschiedene User/Clients verschiedene Sachen sehen dürfen.
z.B.: darf User1 einen Button sehen, den User2 nicht sehen darf. Da stell ich mir jetzt die Frage, wie ich das mit einem WS im Backend machen kann.

Mein Ansatz wäre jetzt der gewesen, dass ich in den Objekten, die vom WS zurückgegeben werden, ein Flag hab und je nachdem, ob dieses Flag auf true oder false ist, wird etwas am Client angezeigt oder auch nicht -> ich bin aber leider nicht zu 100% überzeugt von diesem Ansatz,
Wie würdet ihr das machen?

lg
Generic1
 

Generic1

Top Contributor
Mir würde es auch schon reichen, wenn vielleicht jemand einen Vorschlag in diese Richtung machen könnte, ich weiß nämlich momentan nicht, wie ich das Problem lösen kann.
lg
 

reibi

Top Contributor
Hi

Möchte vorher wissen um was für einen Webservice es sich handelt ... SOAP-Webservice?
Bist Du derjenige der den Service schreibt, oder nur derjenige der in konsumiert, oder testhalber beides?
 

Generic1

Top Contributor
Hi

Möchte vorher wissen um was für einen Webservice es sich handelt ... SOAP-Webservice?
Bist Du derjenige der den Service schreibt, oder nur derjenige der in konsumiert, oder testhalber beides?

Also es handelt sich um SOAP-Webservice und ich bin derjenige der die WSDL schreibt, ich hab also grundsätzlich auf alles Einfluss.
Mir ist nur nicht klar, wie ich den Client sagen soll, was dieser Sehen darf und was nicht (wie oben beschrieben -> den einen Button schon, den anderen nicht usw.)
 

reibi

Top Contributor
Also Du musst eine Authentifizierung einbauen. Serverseitig; der Client darf davon nichts wissen. Wenn ein Client der nicht authentifiziert ist zugreifen will, gibts ne Exception "Nicht genügend Rechte"

Das mit Deinem Button musst DU natürlich im Client lösen.
Kann ich mir Dein Problem ähnlich wie ein CMS vorstellen? Also es gibt "Normale User" und "Admins"?
 

mvitz

Top Contributor
Du vermischst in diesem Falle zwei Schichten (Service und GUI). Ob der Button angezeigt werden kann/darf/soll ist Sache der GUI und nicht deines Services.

Spontan fallen mir nur eine Möglichkeit ein:
Der User deines Webservices muss sich authentifizieren und ein SecurityToken bei jedem Aufruf mitschicken. Wenn der Aufrufer nicht die passenden Rechte hat, schmeißt dein Webservice eine Exception.

Kombinieren könntest du dann noch eine Methode, mit der jemand abfragen kann, welche Rechte der aktuelle Nutzer hat, bzw. welche Methoden er ausführen darf.
 

brauner1990

Bekanntes Mitglied
Könntest du vlt die User in Gruppen zusammenfassen?

Wenn ja, ist dies nur ein einfaches Rechtekonzept wo du sozusagen auf Bereiche Rechte gibst oder nimmst.

Aber grundsätzlich ist es immer eine true - false - Flag abfrage ... sei es jetzt in der Bedinung mit mehreren Möglichkeiten des true/false, aber immer ein if...
 

Generic1

Top Contributor
>> Kann ich mir Dein Problem ähnlich wie ein CMS vorstellen? Also es gibt "Normale User" und "Admins"?

Ja, so ähnlich, es gibt einen "root", der darf alles und es gibt dann Benutzer, die man in der Applikation anlegen kann und denen kann man dann Privilegien zuordnen.
 

reibi

Top Contributor
Ich würde es einfach halten: Wie oben besprochen muss Dein Webservice mit dieser Security umgehen und der client sollte darauf reagieren.

Ist der Client ne Webapp oder n FatClient?
Gibt es unterschiedliche Konsumenten(andere Institutionen) oder benutzt Du Webservices nur als Punkt-zu-Punktverbindung(1 zu 1)
Bist Du der einzige der ein Client zum Service baut?
 

Generic1

Top Contributor
Ich würde es einfach halten: Wie oben besprochen muss Dein Webservice mit dieser Security umgehen und der client sollte darauf reagieren.

Ist der Client ne Webapp oder n FatClient?
Gibt es unterschiedliche Konsumenten(andere Institutionen) oder benutzt Du Webservices nur als Punkt-zu-Punktverbindung(1 zu 1)
Bist Du der einzige der ein Client zum Service baut?


Also ich bin der einzige der einen Client für den WS schreibt und es besteht eine 1:1 Verbindung.
Der Client wird in Adobe Flex programmiert.
lg
 

reibi

Top Contributor
Also Dein einziger Client kümmert sich ja um das UI, ja

Bau doch in den Webservice eine Methode ein die so aussieht:

zB:
boolean isAdmin(int userID);

Der Webservice prüft "hinten" ab ob es sich um einen solchen handelt oder nicht und liefert Dir true oder false zurück.
je nach dem ob es sich um einen "Normalen user" oder einen Admin handelt baust Du das UI unterschiedlich auf ... Der Aufbau des UI ist ausschliesslich Sache des Clients.

Gruss
 

Generic1

Top Contributor
Also Dein einziger Client kümmert sich ja um das UI, ja

Bau doch in den Webservice eine Methode ein die so aussieht:

zB:
boolean isAdmin(int userID);

Der Webservice prüft "hinten" ab ob es sich um einen solchen handelt oder nicht und liefert Dir true oder false zurück.
je nach dem ob es sich um einen "Normalen user" oder einen Admin handelt baust Du das UI unterschiedlich auf ... Der Aufbau des UI ist ausschliesslich Sache des Clients.

Gruss

Dieser Ansatz ist etwas schwierig, da ich verschiedenen User anlegen kann und die dann auch verschiedene Rechte haben.
 

brauner1990

Bekanntes Mitglied
Dieser Ansatz ist etwas schwierig, da ich verschiedenen User anlegen kann und die dann auch verschiedene Rechte haben.

Welche Rechte "Arten" gibt es den? Nur rwx? Wenn ja wäre ja die Linux Variante / FTP Variante ne gute Lösung. Halt mir Owner, Group, Other und dann Read Write Execute ne gute Idee? dann kannste dir die Dinger sehr Variabel aufbauen. 777, 555, usw., hier (http://thomas-becker.de/chmod.htm#2)ist das Prinzip welche ich meine gut beschrieben.
 

reibi

Top Contributor
Also was auf jeden klar ist, ist das in den Webservice nur Daten reingehören und nicht Deine UIs oder Teile davon wie Knöpfe.

Webservices wurden eigentlich dafür mal erfunden das es einen anbieter gibt und viele Konsumenten. Der Anbieter kennt seine Konsumenten auch nicht.
Dieses Prinzip wurde dann mit dem großen SOA-Hype ausgehebelt; warum auch immer.// (wahrscheinlich dass Projektleiter mit SOAPUI kucken können was alles über die Leitung geht)
In diesem Umfeld gibt es weniger konsumenten(1 bis wenige abzählbare) und die Ersteller kennen sich auch noch, oder sind eh die selben Personen.
Das ist ja bei Dir auch so ...oder?

Deine Logik wie Du Die UI aussehen lässt, gehört natürlich in den Client und nicht in den Webservice, das ist immer so.
Wie Du Deine Rechte in Zusammenhang mit Deinem Webservice baust gibts mehrere Ansätze
- True/False zurückgeben mit Methode "isAdmin()"
- Exception werfen, mit Message "Nicht genügen Rechte"
- Unterschiedliche Anzahl von Daten zurückliefern
Was da n guter oder schlechter Ansatz ist kommt vor allem auf Dein Projekt an und hängt vom Architekturdesign ab.


Ansätze für mehr als 2 STufen(Admin, Benutzer) wo die Benutzer verschiedenen Gruppen angehören können, kann man zB mit einem LDAP-Server prima realisieren. Weiss nich ob das für Dein Projekt eventuell zu viel wird.

Gruss
 

Generic1

Top Contributor
LDAP ist sicher zu viel Aufwand, bei mir schauts so aus, dass die User und die Rechte der User in der DB schon gespeichert sind, ich muss das "nur" am Client realisieren, das z.B.: user A das eine sehen darf und user B das eine nicht, dafür aber das andere usw.
Da wird es wohl am besten sein, dass ich jedes mal vor einem WS - Methoden- Aufruf eine Methode "boolean allowed(CurrentUser)" bzw. "String whatIsAllowed(CurrentUser)" aufrufe und zurückgekomme, was dieser User alles darf.
Wie seht ihr das?
 

reibi

Top Contributor
Da wird es wohl am besten sein, dass ich jedes mal vor einem WS - Methoden- Aufruf eine Methode "boolean allowed(CurrentUser)" bzw. "String whatIsAllowed(CurrentUser)" aufrufe und zurückgekomme, was dieser User alles darf.?

Jep so kannstes machen.
Ich, persönlich, würde es aber folgenderweise machen(anders):

Gründsätzlich:
Der Client weiss auf jeden Fall welche Rollen es gibt zB(normaler User, bereichsChef, Admin SuperAdmin usw.); warscheinlich gibts bei Dir nur 2 Rollen(normaler Benutzer, Admin)

Wenn die Session erstellt wird, würde ich den Webservice fragen, welche Rolle der User hat und damit arbeiten. Die Rolle ist dem client solange bekannt, solange die Session läuft. Ist die Session abgelaufen oder der User meldet sich ab ist auch die (clientseitig gespeicherte)Rolle hinfällig. Meldet sich ein neuer User an, läuft das wieder genau so.

Der Unterschied zu Deiner Variante ist der, dass der client nur einen einzigen Aufruf macht um die Rolle festzustellen; er speichert diese dann zwischen.
So wie ich Dich verstanden habe, würdest Du bei jeder aktion einen Webserviceaufruf machen. Das würde ich vermeiden


Gruss
 

Generic1

Top Contributor
OK, das hab ich verstanden und klingt auch ziemlich plausibel.
Was ich noch nicht versteh ist, was die Session in diesem Context ist - meinst du damit, dass die Session beim ersten Aufruf des WebService erzeugt wird?
lg
 

reibi

Top Contributor

reibi

Top Contributor
Ich hab noch nie einen client mit Flex gemacht, aber das läuft über ne Website richtig? Ist also in nem Server drin(Tomcat, Apache 2 ?) Verhält sich somit wie eine Website richtig?

Also immer wenn sich am "FlexClient" ein Benutzer anmeldet(Session wird eröffnet), wird gleich danach die Rolle per Webservice abgefragt und im "Flexclient zwischengespeichert" . Solange der Benutzer am client angemeldet ist, solange speichert der client die rolle. Wenn der Benutzer auf abmelden drückt, ist die Session beendet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Error beim Versuch, einen Webservice zu kontaktieren SOA 4
J SOA WebService JAX-WS Java-Klasse per wsimport generieren lassen SOA 3
K Webservice: 4 counts of IllegalAnnotationExceptions SOA 0
D Zertifikat Authentifizierung am Webservice SOA 0
P JBOSS 7 und Restful Webservice SOA 1
N WebService Ausgabe einer ArrayList SOA 2
N Web Services Client aus externen WebService erstellen SOA 4
I SOAP Webservice Methoden und Parameter auslesen SOA 3
F [WebService] Array von eigenen Objekten SOA 0
P SOAP Webservice mit HTTP Basic Authentifizierung SOA 1
M JAVA Webservice Währungsrechner DRINGEND Hilfe SOA 1
A Up-/ Download von Dateien zu WebService SOA 6
D WebService Technik - Aufwand Änderung des Application Server SOA 3
R Webservice Timeout Konfiguration SOA 3
D SOAP Webservice (SAP) SOA 3
MQue WebService Versionierung SOA 9
L [AXIS2] OutOfMemory Exception bei Übertragung von größerer Datei via Webservice SOA 3
A Funktion mit Map als WebService SOA 4
T Webservice serviceName im Handler ermitteln SOA 3
N Webservice Einbinden wsdl SOA 7
M Edit und Remove über Webservice SOA 3
F Client Problem gegen Webservice SOA 3
P Java Webservice mit JWS Bindingnamen customizen SOA 4
L wie ArrayList an Webservice geben? SOA 3
B Webservice Config / SoapStub: Best Practice SOA 3
S Objektübertragung Fehler über Webservice SOA 10
E Webservice durch Java ansprechen SOA 7
L Webservice HTTPS Netbeans SOA 2
G NullPointerException bei Parameterübergabe an Webservice mittels kSoap2 SOA 2
M Webservice per URL ansprechen SOA 14
M Webservice Client erstellen und XML Request senden SOA 3
T Verwendung von Eclipse Projekten im Axis2 Webservice SOA 8
S Webservice als "CronJob" SOA 4
M Webservice (JaxWS) extern verfügbar machen SOA 5
M Welches WebService Framework ist denn das beste FRAMEWORK? SOA 5
D Webservice fürs Internet sichtbar machen SOA 2
W WebService aus einer HTML-Seite SOA 9
T WebService innerhalb von Seam-Projekt, komplexe Datentypen SOA 6
N JAX-WS WebService und Tomcat 7 SOA 11
E Trennung von Daten und WebService und Wiederverwendung der Daten SOA 2
D Sicherheit bei REST-Webservice SOA 19
M Nutzen des Webservice AWSECommerceService SOA 1
S AXIS2 Webservice: Umgang mit komplexen Datentypen SOA 5
G Webservice Contract first SOA 8
G WebService -> ServletFilter SOA 2
G WebService Concurrency SOA 19
M Fehler beim Veröffentlichen eines Webservice SOA 6
G WebService Types SOA 7
G OpenLigaDB Webservice Client SOA 4
G WebService WSDL SOA 3
A PHP WebService aus Java aufrufen SOA 2
R Proxy WebService erstellen SOA 3
G JPA/ Webservice: Passwort Feld einer Klasse fürs Lesen "verschleiern" SOA 10
G WebService mit wsdl erstellen SOA 4
P WebService SOA 6
H Webservice: BindingProvider SOA 6
D WebService DB abfrage SOA 4
mabe83 EJB Klassen für Webservice nutzen SOA 2
S Webservice-Client-Klasse gibt immer null zurück SOA 3
G WebService mit komplexen Objekten SOA 5
C Problem mit Java Webservice - SOAPBinding.Style - Wrapper class fehlt SOA 1
T Rest Webservice der 2 verschiedene XML Objekte(JaxB) entgegennimmt SOA 10
S Webservice, Vererbung und Netbeans SOA 3
E Lesen der kompletten SOAP als WebService Provider/Server SOA 4
T WebService Authentifizierung SOA 11
mabe83 Suche Hilfe zum Thema Webservice + EJB SOA 3
T WebService erstellen SOA 28
T Krankes Vorhaben: Von VB auf Java Webservice SOA 10
M Webservice RuntimeModelerException? SOA 5
G Webservice mit Java aufrufen SOA 2
G WebService: mehrere methoden mit demselben Namen SOA 4
T einfacher Webservice SOA 3
G Webservice im JBoss: runtime modeler error SOA 3
V webservice von aussen (webbrowser) ansprechen SOA 2
V Webservice, allgemeine Fragen SOA 9
G Alfresco - WebDav oder WebService SOA 2
0 Webservice nutzen (rpc/enc style) SOA 2
R XML verschicken mit Webservice Server Client SOA 2
R Webservice aufrufen mit SOAP Style.DOCUMENT ? SOA 5
G Webservice zugreifen SOA 6
G Deploy Apache CXF WebService mit Eclipse SOA 2
G Webservice mit JSON SOA 8
T Webservice über Tomcat loggen SOA 5
thE_29 WebService - JAXBElement - richtige Klasse? SOA 2
L Probleme mit komplexen Datentypen in einen Webservice SOA 2
O brauche hilfe bei java/webservice geschichte SOA 29
M Webservice/ Axis/ Bea Weblogic Server 8.1 SOA 12
E Webservice konfigurieren SOA 2
Y Webservice erstellen SOA 4
F Tutorial zu WebService mit JBoss, Eclipse und Jax-ws? SOA 3
C Webservice im Unternehmen SOA 4
L webservice frage (eclipse/wtp, wsdl) SOA 12
U Webservice mit Axis, Hello World Beispiel SOA 2
J Frage zu Webservice SOA 3
L WebService TestClient Problem SOA 2
OnDemand REST Client Aufbau SOA 7
D POST-Request mit Chrome Rest Client wirft Fehler : HTTP Status 415 - Cannot consume content type SOA 3
M Web Services Client erstellen: Grundlegende Starthilfe SOA 2
G Apache-CXF Client am public key erkennen SOA 0
J REST mit java client und php server SOA 22

Ähnliche Java Themen

Neue Themen


Oben