2016-05-25 7 views
2

Wir haben eine Webanwendung, die in IIS gehostet wird und öffentlich zugänglich ist für jeden, der ein Konto in unserem hat Active Directory (Wir authentifizieren die Benutzer mit AD).Beschränken Sie den Zugriff auf einen Teil der ASP.Net Web App (Nur die Computer aus der gleichen Domäne sind erlaubt)

Es gibt ein aspx-Formular, das aus dem öffentlichen Internet nicht zugänglich sein sollte. Wenn der Computer des Benutzers mit unserer Domäne verbunden ist, sollte dieser Benutzer auf dieses bestimmte Formular zugreifen können. Andernfalls wird der Benutzer zu einer nicht autorisierten Zugriffsseite aufgefordert.

Wie kann ich das erreichen?

+0

Sie können die eingehende IP-Adresse lesen und überprüfen, ob sie von einem Ihrer lokalen Subnetze stammt. –

+0

Können Sie einen Hinweis geben, wie es geht? –

Antwort

1

Um sicherzustellen, dass ich Sie richtig verstehe, haben Sie eine Website, wo die einzige Möglichkeit, auf alles zuzugreifen, über Windows-Sicherheit (aktives Verzeichnis in Ihrem Fall) verifiziert wird. Sie verwenden keine explizit definierten Benutzer & Rollen in einer web.config-Datenbank. Ich nehme an, es ist sicher zu sagen, dass du deine Authorität herausgefunden hast, und sie wird auf alle Seiten angewendet.

Jetzt haben Sie eine bestimmte ASPX-Seite, auf der Sie den Zugriff auf Personen einschränken möchten, die sich physisch in Ihren Unternehmensbüros befinden. Dies sind die gleichen Leute, die bereits ein AD-Konto haben und von ihren firmeneigenen Laptops auf Ihre Website gelangen, während sie im Außendienst arbeiten und über VPN Verbindung herstellen, so dass AD immer noch seine Sache machen kann. Aber Sie wollen, dass diese oben genannten Leute für diese bestimmte Seite im Büro sind.

Wenn die oben wahr ist, dann von der Code-Behind-Datei in Ihrem ASPX (bei Verwendung von Web-Formularen) die IP-Adresse über lesen:

Console.WriteLine (Request.UserHostAddress);

Wenn Sie MVC mit der Rendering-Engine aspx style verwenden, gilt das Gleiche.

Wenn Sie die Adresse zu lesen, und es folgt eine dieser Muster, es ist eine interne Adresse:

10.x.x.x 
172.16.x.x 
192.168.x.x 

es auf Sie ist, herauszufinden, welche Subnetz geeignet ist.

Nehmen wir jetzt an, Ihr Problem besteht darin, dass Sie Active Directory verwenden, um alle Ihre Anwendungsbenutzer zu speichern, unabhängig davon, ob sie tatsächlich von Ihrer Firma verwendet werden oder nicht. In diesem Szenario würde ich mir vorstellen, dass Ihre Nutzer einige Creds einwerfen und diese über System.DirectoryServices (oder was immer Sie wollen) in AD einspeisen, aber Sie haben eine bestimmte Seite, die nur für tatsächliche Mitarbeiter und nicht für die größere Benutzerbasis funktionieren sollte das passiert zufällig innerhalb von AD. In diesem Szenario können Sie einen DirectorySearcher für den angemeldeten Benutzer starten und prüfen, ob er Teil Ihrer Sicherheitsgruppe "Employees" ist (Sie haben eine, oder?), Oder Sie können den IP-basierten Filter wie im vorherigen Szenario verwenden .

Es riecht nicht richtig, durch interne IP zu beschränken. Wäre es für Sie besser, wenn Sie diese eine Seite in eine separate Website in IIS auf einem bestimmten Server aufteilen, der intern nur route-fähig ist?

+0

Vielen Dank. Ich werde es versuchen. –

Verwandte Themen