WebServices sicher nutzen

11. Februar 2011 22:19

Hallo miteinander,

endlich habe ich es hinbekommen und kann mit Navision via WebServices und PHP kommunizieren.

Nun geht es um den sicheren Einsatz auf dem Kundenserver und dafür bräuchte ich mal eure Hilfe was ihr bzgl. Sicherheit meint.

Erstmal der Aufbau:
Kundenserver (WebServices) - Internet - Webserver

Ich überlege ob das folgende schon sicher genug wäre, damit keiner von außen ins Navision eindringen kann:
Kundenserver (WebServices) - Hardware Firewall - VPN Tunnel - Hardware Firewall - Webserver

Vorraussetzung ist natürlich das der Webserver immer sicher ist. Außerdem würde ich der Firewall vorm Kundenserver sagen, das er nur auf die IP des Webservers hören soll und nur den VPN Port öffnet.

Was haltet ihr von diesem Setup? Oder denkt ihr, man müsste noch weiter gehen? Für die WebServices braucht man ja einen Login, kann man hier einen anlegen der nur bestimmte Rechte hat?

Viele Grüße,

Alex

Re: WebServices sicher nutzen

14. Februar 2011 18:03

Hi Alex,


der Webservice verwendet die Windows Authentifikation.
Daher kannst du jedem User gewisse Rechte erteilen (Classic----> Extra ----> Zugruffsrechte; Rollen).

Dort erteilst du auch die Lese-, Schreib-, Einfüge-,Löschrechte der einzelnen User.



Gruß

Aydin

Re: WebServices sicher nutzen

14. Februar 2011 18:23

Hallo Aydin,

danke schonmal für den Beitrag, hat mir schonmal sehr geholfen!
Weißt du ob es möglich ist diesen Usern auch Zertifikate zu hinterlegen? Ich weiß zwar nicht ob ich das per PHP übermitteln kann, einen Versuhc wäre es jedoch Wert.

Das Problem ist ja das die Anwendung Lesen, Updaten und Speichern können muss, Löschen jedoch nicht unbedingt. Sonst müsste ich mal überlegen dafür jeweils einen einzelnen User anzulegen.

Re: WebServices sicher nutzen

14. Februar 2011 18:26

Hallo,

du kannst in NAV Objekten auch Rechte zuweisen (Permissions) die höher sind als die Rechte des Benutzers (sonst könnte man in NAV keinen Beleg buchen).

Gruß, Fiddi

Re: WebServices sicher nutzen

14. Februar 2011 18:42

Danke nochmal für die Beiträge, habe eben einen Benutzer angelegt und mal nen wenig gespielt! Das ist ja echt super was man da alles einstellen kann, ich würde dann einen extra benutzer für die WebServices anlegen und wirklich dem nur genau die Tabellen freigeben auf die er Zugriff haben soll. Ist bestimmt ne Mords-Arbeit, sollte aber in Verbindung mit nem sicheren System auch Sicher sein!

Re: WebServices sicher nutzen

14. Februar 2011 19:48

Ich hab nochmal ne Frage dazu:

Wenn ich jetzt z.B. einen User mit den rechten All hätte, also quasi nen normalen User der so fast überall rankann, kann ich dann irgendwie sagen das dieser NICHT als Webservice Login dienen soll? Also das ich den allen Usern sage ihr dürft nicht über WebServices euch einloggen und nur genau dem einen sage das er es darf?
(Also Page 810 + alles weitere nur dem einen freigeben)

Re: WebServices sicher nutzen

15. Februar 2011 10:18

Hi Alex,


der Webservice verwendet nur die Windows Authentifikation. Dann erteil diesem speziellen User eine Datenbank Authentifikation.
Dann kann dieser User nur über den Classic Client sich mit der Datenbank Auth. anmelden.

War es das, was du wolltest?
Ob man speziell einem Windows User sagen kann, du darfst dich nicht über den Webservice anmelden, davon habe ich leider nix gehört:-)
(Würd mich aber auch interessieren, ob es geht)


Gruß

Aydin

Re: WebServices sicher nutzen

15. Februar 2011 10:41

Hallo,

kannst du nicht den einzelnen Benutzern Zugriffsrechte auf bestimmte Pages/Codeunits gewähren, damit steuern ob sie den Webservice nutzen dürfen?

Gruß, Fiddi

Re: WebServices sicher nutzen

15. Februar 2011 15:31

Frage: Wie stellt Ihr denn die Webservices bereit? Mit einer extra dafür erstellten Page oder mit einer Standard-Page , z. B. Page 21 Customer Card? Wenn ich dann dem User die Rechte für diese Page entziehe, dann geht natürlich intern auch nix mehr.

Kann man den feststellen, ob der Aufruf vom Webservice kommt? Falls ja, wäre es ja z. B. möglich in der Page zu prüfen, ob eine entsprechende Berechtigung für den User vorliegt.

Es gäbe aber generell vieleicht noch den Ansatz IIS als Proxy für NAV zu verwenden. Also IIS konsumiert die NAV-Webservices und stellt diese entsprechend nach außen (ggf. über einen Standardport 8080 oder so) bereit. Die Berechtigung für den Zugriff von außen ließen sich dann über die Einstellungen am IIs regeln.

Volker


Edit:
so sollte man feststellen können, dass der Aufruf über webService kommt:
Code:
IF ISSERVICETIER THEN
IF GUIALLOWED THEN BEGIN
//>>RTC execution

END
ELSE BEGIN
//WEB execution

END