2014-01-08 11 views
6

Unser Kunde hat eine Reihe von (5-6) Intranet/Internet-Anwendungen entweder speziell entwickelt oder 3D-Party, in verschiedenen Webservern, die Anwendungen können wir nicht ändern/Kontrolle.Wie kann ich den Zugriff auf eine Anwendung beschränken, die ich nicht nur über eine andere Referrer-Anwendung kontrolliere?

Wir haben eine Web-Portal-Anwendung entwickelt haben (A) und der Kunde will, dass seine alle anderen Anwendungen (B) nur über die A zugegriffen werden, was bedeutet, dass, wenn ein Benutzer für B direkt die URL der Anwendung kommt, er ist ein bekommt Fehlerseite, die besagt, dass der Zugriff nur über A zulässig ist. Der Benutzer muss sich also bei Anwendung A anmelden und dann auf eine Verknüpfung zu Anwendung B klicken, um darauf zuzugreifen. Diese Anforderung wurde aus Sicherheitsgründen gestellt und soll A als Access Gateway für andere Anwendungen (B) fungieren.

Ist das möglich und wie können wir es implementieren? Sollten wir einen anderen Webserver auf der Oberseite als Proxy für alle anderen Anwendungen verwenden (B) oder gibt es dafür eine bessere Lösung? Und wenn wir einen anderen Webserver als Proxy verwenden, implementieren wir die Referrer-Logik mit einer Benutzerkennung - Token Ansatz kombiniert mit entsprechenden Session Cookies, so dass die URL der Anwendung B nicht gehackt werden kann und für jeden Benutzer und jede Sitzung einzigartig ist ?

Entschuldigung, wenn ich meine Fragen unklar oder falsch angegeben habe, aber ich bin nicht vertraut mit Netzwerk-/Systemadministration und Webservern. Ich kann mehr Details zur Verfügung stellen, wo nötig.

+0

Proxy weitergeleitet. Sie sagen, dass Sie die anderen Anwendungen (B) nicht ändern können, also wie werden sie wissen, Verbindungen zu verweigern, wenn sie nicht verbunden sind h das Portal? –

+0

Deshalb habe ich mir einen Top-Level-Webserver ausgedacht, der als Proxy (zusätzliche Sicherheitsstufe/Filter) für Anwendungen (B) fungiert, wenn dies natürlich irgendwie machbar ist. Das Hosting der Anwendungen erfolgt durch unseren Kundengedanken, so dass es möglich ist, auch von uns kontrolliert zu werden. –

Antwort

2

gibt es verschiedene Ansätze hier:
1. Verwendung von Firewall-Einstellungen den Zugriff auf B http {s} Port nur von A IP-Adresse.
2. Satz Verzeichnis Einschränkung in httpd.conf für aps B Verzeichnis wie:

<Directory "/var/www/B"> 
    AllowOverride None 
    Order allow,deny 
    Allow from <IP of A> 
</Directory> 

in APS A erstellen Link (http://ip_A/accesstoB/somepath/script.php), die wie mit .htaccess Regel wird Proxied nach B:

RewriteRule ^accesstoB/(.*)$ http://<ip_B>/$1 [P] 

In diesem Beispiel: Kundenzugriff auf http://ip_A/accesstoB/somepath/script.php Link wird auf http://ip_B/somepath/script.php

+0

Beachten Sie, dass die Sicherheit dieser Lösung auf die Sicherheit von TCP/IP beschränkt ist - wenn ein Benutzer den Inhalt von TCP-Paketen kontrollieren kann, die von B empfangen werden und scheinbar von A kommen (z.durch ARP-Poisoning), dann können sie Anfragen ausführen, ohne zuerst zu authentifizieren. +1 für einen netten einfachen Ansatz. – Michael

+0

@Michael Thanx für den einfachen Ansatz, aber wenn ich richtig verstehe, ist dies nur für die erste Anfrage von der Referrer-Anwendung A. Was ist mit den nachfolgenden Anforderungen nach dem Benutzer Anmeldung B, die nicht IP von A haben? –

+0

bleiben Sie einfach in der URL '^ accesstoB /' und es wird die ganze Zeit über [A] weitergeleitet. Kunden müssen überhaupt nichts über [B] wissen;) – swserg

1
  1. Sie beginnen mit Beschränkung des Zugangs zu B Anwendungen durch Web-Server conf-Dateien mit oder mit Firewall-Einschränkungen basierend auf IP.
  2. Dann Sie umleiten all diese Anforderungen an neue Wrapper-App, die Sie entwickeln werden.
  3. Mit dieser Wrapper-App tun Sie, was auch immer Sie wollen, dann Ihre Wrapper-App tut die http/https-Anfrage (via libcurl oder etc.) und Echos die Antwort.
Verwandte Themen