2009-12-11 19 views
12

Wir verfügen über eine ASP.Net-Webanwendung, die auf IIS6 ausgeführt wird und eine eigene Benutzerdatenbank verwaltet.ASP.Net - Verwenden der Standardauthentifizierung ohne Windows-Benutzer

Die Website selbst erlaubt nur anonymen Zugriff und alle Authentifizierung/Sicherheit wird mit unserer Anwendung selbst verwaltet.

Wir haben eine Seite, die eine HTML-Tabelle mit Daten enthält, die wir in Excel importieren und dann für Reporting-Zwecke verwenden. Die Seite hat derzeit keine Sicherheit implementiert.

Wir müssen Sicherheit auf dieser Seite hinzufügen, damit diese Datenblätter nicht in die falschen Hände geraten, dann können die Daten nicht "aktualisiert" werden, ohne einen Benutzernamen/ein Passwort anzugeben.

Wenn ich diese Seite so eingestellt habe, dass kein Anonymouse-Zugriff erlaubt ist, kann ich die Basis-/Windows-Authentifizierung mit Windows-Benutzern verwenden, um diese Seite zu sichern. Wenn Excel dann die Daten aktualisiert, wird das Kennwortdialogfeld angezeigt.

Das Problem ist, dass ich in der Lage sein muss, diese Seite basierend auf den Benutzern in unserer Datenbank zu sichern, und sie werden keine Windows-Benutzer sein. Ich muss es auch so machen, dass Excel die Authentifizierung verwalten kann, die jegliche formularbasierte Authentifizierung ausschließt.

Wer hat irgendwelche Ideen? Ist es möglich, dass IIS sich anderweitig nach seiner Standardauthentifizierung umschaut?

Antwort

10

Ok, also habe ich zwei Lösungen für dieses Problem gefunden. Ein Dankeschön an Zhaph - Ben Duguids Antwort, die ein HttpModule ist, mit dem ASP.Net die Authentifizierung vollständig verwalten kann.

Die zweite Lösung, und die, mit der ich gehe, ist dank dieser Frage/Antwort.

HTTP Authentication (Basic or Digest) in ASP Classic via IIS

Ich habe diese abgespeckte und einen einfachen Test Geschirr haben, die gut zu funktionieren scheint. In diesem Beispiel überprüft es anstelle eines Datenbankaufrufs lediglich, dass Benutzername und Kennwort übereinstimmen, und berücksichtigt dies als authentifiziert.

+0

Beeinträchtigt dies die Sicherheit? – Joyce

1

Ich bin kein Experte, aber ich dachte, dass der Punkt von Basic war, dass es Windows-Authentifizierung war. Können Sie ein Skript ausführen, um Ihre DB-Benutzer mit Ihrem Active Directory zu synchronisieren?

Wenn es sich um eine Unternehmens-AD handelt, können Sie eine zweite AD nur für Ihre App in Betracht ziehen und Benutzer aus Ihrer Unternehmens-AD und Ihrer DB synchronisieren. Wenn Sie keine Passwörter synchronisieren müssen (z. B. eine pwd-mgmt-Seite in Ihrer Site erstellen), könnten Sie einfach Skripte oder C# oder etwas anderes verwenden. Wenn Sie mit der integrierten Passwortsynchronisierung etwas anspruchsvolleres möchten, können Sie sich ILM 2007 (bald FIM 2010) ansehen.

+0

Das Problem lizenziert ist, dass ich keine Möglichkeit zu wissen, was Alle vorhandenen Benutzerkennwörter sind. Sie sind alle gesalzen und Hashed usw. –

+0

Wie, wenn Sie Ihre Synchronisierungsmethode (im Hintergrund) setzen und dann alle Passwörter ablaufen, so dass Benutzer neue einrichten müssen? – serialhobbyist

1

Ist die Seite eine .html-Datei oder eine .aspx-Datei? Wenn es eine ASPX ist, sollten Sie diese Seite unter anonymen Zugriff und überprüfen Sie die Authentifizierung in der Seitenlogik selbst

+0

Es ist eine ASPX-Seite, so dass ich jeden erforderlichen .net/C# -Code schreiben kann. Ist es jedoch möglich, IIS als anonymen Vorgang auszuführen und anschließend eine benutzerdefinierte Authentifizierung im HTTP-Auth-Stil durchzuführen? Hast du Beispiele dafür? –

+0

Ich bin mir nicht sicher, ob ich deine Frage verstehe. Sie haben gesagt: "Die gesamte Authentifizierung/Sicherheit wird über unsere Anwendung selbst verwaltet." Ich nehme an, sobald der Benutzer sich anmeldet, wird eine Session-Variable gestartet, richtig? Überprüfen Sie oben auf der Seite, ob diese Variable, wenn sie nicht festgelegt ist, auf "login.aspx" umleitet. – SergeyKazachenko

+1

Die Seite wird über Excel aufgerufen ... Excel hat keine Ahnung, was mit einer Seite geschehen soll, die zu Login.aspx weiterleitet. –

6

Da Sie eine benutzerdefinierte Datenbank von Benutzern haben, würde ich empfehlen, eine schnelle membership provider das Erstellen spricht mit Ihrem Datenbankschema.

MSDN hat ein gutes Beispiel für "How to: Sample Membership Provider".

Sie können dann die standard access control mechanisms of ASP.NET verwenden, um die Seite zu sperren, erfordern eine Authentifizierung, usw., zusammen mit Kontrollen wie Login, LoginStatus und andere viel von der Benutzeroberfläche, die Sie benötigen.


bearbeiten

Ein schnelles search folgenden gefunden, hinzuzufügen, die Macht Hilfe:

Web Service Security - Basic HTTP Authentication without Active Directory

Wo Greg Reinacker präsentiert „ein voll funktionsfähigen Probe in 100% m Anaged Code, der die Verwendung der HTTP-Standardauthentifizierung mithilfe eines separaten Berechtigungsnachweisspeichers demonstriert (in diesem Fall eine XML-Datei, obwohl dies leicht in eine Datenbank oder einen LDAP-Speicher geändert werden könnte). "

+0

Ich mag mich hier irren, aber das beruht dann nicht auf einem Forms-Authentifizierungsstil, z. B. das Anfordern einer Seite führt den Benutzer zuerst zu einer Anmeldeseite, bevor er zur ursprünglichen Seite zurückkehrt. Das Problem ist, dass dies aus Excel nicht möglich ist, weshalb ich HTTP Auth verwenden muss, zB Basic Authentication. –

+0

Ah, ich sehe dich darauf hinweisen, aber dann steckst du ohne Windows Benutzer fest - was Serialhobbyist darauf hinweist, was Basic Auth benutzt. –

+0

Ich habe einige mögliche Anwendungen eines HttpModule zur Implementierung der Basisauthentifizierung außerhalb von IIS gesehen. Ich werde hier posten, wenn ich Erfolg habe. –

1

Ich habe eine Bibliothek namens FSCAuth geschrieben, die dabei helfen kann. Es kann trivialerweise nur für die einfache Authentifizierung ohne Active Directory eingerichtet werden. Es wird stattdessen Ihre Benutzerdaten aus einer Datenbank/Datei lesen/wo auch immer (es gibt sogar ein Speicher-only Users)

Es ist BSD at Binpress mit diesem

Verwandte Themen