2010-01-15 13 views
9

Ich habe eine Website, die ich sowohl Forms und Windows Auth für zulassen möchte. Mein Problem ist, dass wenn Sie IIS so einrichten, dass sowohl anonyme (Erforderlich für Formularauthentifizierung) als auch Windows-Authentifizierung zulassen, dass der Browser die Netzwerk-Anmeldeinformationen des Benutzers nicht sendet.IIS Windows Authentifizierung vor Anonymous

Es verwendet nur die anonyme Anmeldung. Gibt es eine Möglichkeit entweder in IE8 oder IIS es Windows Auth 1st ausprobieren zu lassen und dann auf Anonymous zurückzugreifen?

Danke für jede Hilfe.

+0

mögliche Duplikate von [Wie NTLM-Authentifizierung mit Fallback zu unterstützen, um in ASP.NET MVC zu erstellen?] (Http://stackoverflow.com/questions/4027911/how-to-support-ntlm-authentication-with- fall-back-to-form-in-asp-net-mvc) – Neil

Antwort

11

Sie können nicht nach einer HTTP-Authentifizierung fragen (ob dies die Basisauthentifizierung oder die integrierte Windows-Authentifizierung ist), ohne dass das Authentifizierungsdialogfeld in dem Fall erscheint, in dem noch keine Anmeldeinformationen vorhanden sind.

So allgemein für hybride HTTP-auth + cookie-auth-Ansätze aktivieren Sie sowohl anonymen und authentifizierten Zugriff für den Großteil der Website, sondern erlauben nur authentifizierten Zugriff auf ein bestimmtes Skript.

Wenn der Benutzer auf eine Seite ohne beide Arten von Auth zugreift, spucken Sie eine Seite mit einem Anmeldeformular für die Cookie-basierte Auth und einen Link zu der einen URL aus, die nur authentifizierten Zugriff erlaubt. Der Benutzer kann das Formular für Cookies & Formularauth ausfüllen, oder den Link, um sich stattdessen mit HTTP-Authentifizierung anmelden.

Wenn der Benutzer diesem Link folgt, erhält er eine 401-Antwort und muss die HTTP-Authentifizierung entweder über das Authentifizierungsdialogfeld oder möglicherweise automatisch mithilfe der integrierten Windows-Authentifizierung bereitstellen. Sobald dies einmal passiert ist, sendet der Browser die gleichen Anmeldeinformationen an alle zukünftigen Seiten, sodass IIS die Anmeldeinformationen dekodiert, um Ihnen die erwarteten REMOTE_USER zu geben, wenn Ihre Hauptsiteskripts ausgeführt werden.

Browser senden die Anmeldeinformationen nur an Seiten im selben Verzeichnis wie das 401 Skript oder dessen Unterverzeichnisse. Aus diesem Grund ist es am besten, das Skript HTTP-auth-required in das Stammverzeichnis zu schreiben, z. B. als /login.aspx.

Es gibt jedoch einige Browser, die Anmeldeinformationen nicht automatisch für weitere Seiten übermitteln und erfordern, dass jede HTTP-Anforderung zuerst 401 antwortet, bevor die Anfrage erneut mit den Anmeldeinformationen gesendet wird. Dies macht optional-auth und hybrid-auth schemes unmöglich (und macht das Browsen von geschützten Seiten viel langsamer!). Der einzige moderne Browser, der dies tut, ist Safari. Es ist Ihnen vielleicht egal, da die Unterstützung von Safari für die integrierte Windows-Authentifizierung traditionell ohnehin wackelig ist und immer noch den Authentifizierungsschlüssel forms + cookies verwendet werden kann.

+0

Hm, Entschuldigung für den Downvote, weiß nicht warum, aber kann anscheinend nicht ungeschehen machen .. – Onkelborg

Verwandte Themen