2011-01-10 2 views
4

Ich habe die gleiche Code-Basis auf 2 verschiedenen Seiten auf dem gleichen Server (IIS 7.5) gehostet.AuthenticationType Negotiate vs NTLM

Aus irgendeinem Grund, wenn ich die Identity.AuthenticationType -Eigenschaft auf den Code hinter einem HTTP-Handler überprüfen, sehe ich NTLM für 1 Standort und verhandeln für den anderen. Dies verursacht einige Probleme und ich brauche beide, um NTLM zu verwenden.

Können Sie mir helfen, herauszufinden, warum dieser Unterschied? Bisher sehe ich, dass beide IIS-Sites auf die gleiche Weise konfiguriert sind, aber natürlich gibt es mindestens einen Unterschied, den ich nicht erkennen konnte. Danke!

EDIT
I this Link verwendet habe, die Anweisungen entfernen "Verhandeln" Anbieter von IIS zur Verfügung stellt. Es hat nicht für mich funktioniert. Ich führte

Vielleicht habe ich etwas falsch gemacht, aber es hat nicht geholfen. Ich sehe immer noch "Negotiate" als Authentifizierungstyp

Das Problem, das ich habe, ist, dass ich auf Web.config Identitätswechsel Anmeldeinformationen festlegen, aber es ist nicht mit ihnen. Anstatt die von mir angegebenen Anmeldedaten zu verwenden, wird der anonyme Benutzer verwendet.

Und etwas Seltsames ist, dass WindowsAuthentication deaktiviert ist. Ich dachte "Negotiate" wurde nur von WindowsAuthentication verwendet.

+0

Geben beide ASP.net-Konfigurationsdateien Identitätswechsel an? Sind beide in der gleichen Sicherheitszone? – sisve

+0

@Simon: beide Dateien geben Identitätswechsel an. Nicht sicher, wie die Sicherheitszone überprüft werden soll. –

+0

Sicherheitszonen sind eine IE-Sache (Internet, Intranet, Trusted, Untrusted). Nicht wirklich in anderen Browsern anwendbar. – sisve

Antwort

0

Als erstes sollten Sie prüfen, ob es einen Unterschied zwischen den Authentifizierungstypen gibt, die für jede Site aktiviert sind.

Standardmäßig ist nur Anonymous aktiviert.

+0

danke für Ihre Antwort. Ich habe überprüft, dass hundert Mal auf meinem Frustrationspfad und sie sind = –

+0

Do the Websites verwenden verschiedene Anwendungspools? –

+0

Ja Herr -------- –

2

Negotiate wählt intern entweder Ntlm oder Kerberos-Authentifizierung. Wenn auf der Website Ntlm angegeben wird, wird nur die Ntlm-Authentifizierung ausgewählt. Bitte überprüfen Sie beide Seiten und machen Sie die Authentifizierung gleich.

0

Wenn Ihre Version von Internet Information Server (IIS) 7.0 einen Blick in die Systemdrive% <% nehmen>/Windows/System32/inetsrv/config/ApplicationHost.config-Datei für einen Abschnitt wie folgt aus:

<system.webServer> 
    <security> 
     <authentication> 
      <windowsAuthentication enabled="false"> 
       <providers> 
        <add value="Negotiate" /> 
        <add value="NTLM" /> 
       </providers> 
      </windowsAuthentication> 
     </authentication> 
    </security> 
</system.webServer> 

Die Dokumentation für Windows Authentication Providers enthält möglicherweise weitere Einzelheiten.

Die Remove NEGOTIATE from WindowsAuthentication in IIS Frage enthält Anweisungen zum Entfernen Negotiate, die ich hilfreich fand, wenn ich Negotiate wieder aktivieren wollte.

1

Die Windows-Authentifizierung muss aktiviert und die anonyme Authentifizierung deaktiviert sein, um den angemeldeten Benutzer abzurufen (ich gehe hier davon aus, dass Sie sich in einer Domäne authentifizieren und nicht auf einen anonymen Benutzer zurückgreifen möchten, wenn der Benutzer dies nicht tut Berechtigungsnachweise nicht mit Windows-Auth autorisieren.

In IIS7.5 klicken Sie zum Anzeigen der verwendeten Anbieter auf Authentifizierung, klicken Sie mit der rechten Maustaste auf Windows-Authentifizierung und wählen Sie Anbieter aus. Sie haben eine Liste der aktivierten Provider, die Reihenfolge ist wichtig. Stellen Sie sicher, dass sie beide gleich sind (in Ihrem Fall haben Sie NTLM ganz oben in der Liste).

Entschuldigung für die späte Antwort!