Frage

Hier ist mein Szenario. Ich habe eine Anwendung, die integrierte Windows-Authentifizierung verwendet, um zu arbeiten. In Application_AuthenticateRequest() verwende ich HttpContext.Current.User.Identity den aktuellen WindowsPrincipal des Benutzers meiner Website.

Jetzt ist hier der lustige Teil. Einige unserer Mitglieder haben vor kurzem geheiratet, und ihre Namen ändern. (Das heißt der NT Anmeldung des Benutzers ändert sich von jsmith jjones), und wenn meine Anwendung sie authentifiziert, IIS übergibt mir ihre OLD LOGIN. Ich fahre fort, um zu sehen jsmith meine Anwendung übergeben, bis ich meinen Server neu zu starten! den Client abzumelden funktioniert nicht. hat die App Pool Neustart nicht. Nur ein vollständiger Neustart.

Wer weiß, was hier vor sich geht? Gibt es irgendeine Art von Befehl, den ich verwenden kann, spülen, was Cache mir dieses Problem zu geben? Ist mein Server falsch konfiguriert?

Hinweis: Ich definitiv nicht wollen, IIS neu zu starten, meine Anwendungspools oder die Maschine. Da dies ein Produktionsfeld ist, sind diese nicht wirklich praktikable Möglichkeiten.


AviD -

Ja, ihre UPN wurde zusammen mit ihrem Login-Namen geändert. Und Mark / Nick ... Dies ist ein Produktionsunternehmen Server ... Es kann nicht nur neu gestartet werden oder IIS neu gestartet.


Follow-up (für die Nachwelt):

Grhm Antwort war goldrichtig. Dieses Problem taucht in Low-Volume-Servern, wo Sie mit Ihren Anwendungen nicht viele Leute haben, aber genug, um Anträge sind der Benutzer Identität im Cache zu halten. Der wichtigste Teil des KB weshalb das Cache-Speicherelement zu beschreiben scheint nicht nach dem Ausfall aufgefrischt 10 Minuten:

  

Die Cache-Einträge zu tun Zeit aus, aber die Chancen sind, dass wiederkehrende   Anfragen von Anwendungen halten den vorhandenen Cache-Eintrag am Leben für die   maximale Lebensdauer des Cache-Eintrag.

Ich bin mir nicht ganz sicher, was in unserem Code verursacht wurde diese (die wiederkehrenden Abfragen), aber die Auflösung, die für uns arbeitete, war der LsaLookupCacheExpireTime Wert aus dem scheinbar obszön Standard von 1 Woche nur ein paar Stunden zu schneiden. Das ist für uns, schneiden Sie die Wahrscheinlichkeit, dass ein Benutzer in der realen Welt betroffen sein würde im wesentlichen auf Null, und doch zugleich nicht eine extreme Anzahl von SID-Namen Lookups gegen unsere Verzeichnisservern verursachen. Eine noch bessere Lösung IMO wäre, wenn Anwendungen Benutzerinformationen durch SID anstelle von Benutzerdaten Mapping aufblickte Text Login-Namen. (Beachten Sie, Anbieter! Wenn Sie auf die AD-Authentifizierung in Ihrer Anwendung angewiesen sind, werden Sie die SID in der Authentifizierungsdatenbank setzen wollen!)

War es hilfreich?

Lösung

Ich habe in letzter Zeit ähnliche Probleme hatte und wie in Robert MacLean Antwort , Avids Gruppenrichtlinienänderungen nicht funktionieren, wenn Sie nicht als Nutzer anmelden.

Ich fand die Änderung der LSA Lookup Cache Größe wie MS beschrieben KB946358 arbeitete ohne Neustart oder jede AppPool oder Dienstleistungen Recycling.

Ich fand dies als eine Antwort auf diese ähnliche Frage: Falsche Authentifizierung nach dem Wechsel Benutzer-Anmeldenamen .

Sie können in das folgende System aussehen soll Anrufe wie die folgenden:

LookupAccountName()

LookupAccountSid()

LsaOpenPolicy()

Sie können sie verwenden, um eine C ++ / CLI (/ Managed-C ++) App zu schreiben, um die LSA-Cache zu befragen.

Andere Tipps

Das Problem als AviD identifiziert ist die Active Directory-Cache, die Sie über die Registrierung . Je nach Ihrer Lösung von Avid Gruppenrichtlinienoptionen werden fehlschlagen oder zu arbeiten, je nachdem ob Sie tatsächlich den Benutzers Anmeldung oder nicht.

Wie es zwischengespeichert wird hängt davon ab, wie Sie auf IIS authentifizieren. Ich vermute, es könnte sein, Kerberos so die Lichtung zu tun, wenn es von Kerberos verursacht wird, möchten Sie vielleicht versuchen, klist mit der Purge-Option, die kerberos-Tickets bereinigen soll, die ein reauth AD beim nächsten Versuch zwingen werden, und die Details aktualisieren.

Ich würde vorschlagen, auch bei der Umsetzung der Suche diesen , die leicht ist komplexe, aber weit weniger fehleranfällig.

Ich weiß, dass wir im Cache gespeicherten Anmeldeinformationen Probleme in IIS in der Vergangenheit hier gehabt haben, auch, und für Tage nach googeln stießen wir auf einem obskures (uns zumindest) befehlen Sie zwischengespeicherten Anmeldeinformationen anzuzeigen und löschen verwenden können.

Start -> Ausführen (oder WinKey + R) und Typ Kontrolle keymgr.dll

Diese feste unsere Probleme für Client-Rechner. Habe es nicht auf Servern versucht, aber es könnte einen Schuss, wenn sein die Server-Caching-Anmeldeinformationen wert sein. Unser Problem war, dass wir alte Anmeldeinformationen wurden erhalten, aber nur auf einer Client-Rechner-Basis. Wenn der Benutzer auf einem separaten Client-Rechner angemeldet, alles war in Ordnung, aber wenn sie ihre eigene Maschine an ihrem Schreibtisch verwendet, dass sie in der Regel arbeiten sie auf, die im Cache gespeicherten alten Anmeldeinformationen hatten.

Wenn es kein Problem ist nur den NT-Benutzername ändern, dann scheint es, dass der Authentisierungsdienst die alten Benutzername wird das Caching.
Sie können festlegen, diese auf die lokalen Sicherheitseinstellungen deaktiviert, gehen zu sein (in Verwaltung), und je nach Ausführung / Ausgabe / Konfiguration der Einstellungen, die möglich relevant sind (aus dem Gedächtnis) sind „Anzahl der bisherigen Anmeldungen Cache“ und „Do erlaubt nicht Speicherung von Anmeldeinformationen ... ".

Weitere Faktoren zu berücksichtigen:

  • Domain-Mitgliedschaft beeinträchtigen könnte dies als Mitgliedsserver Domain-Einstellungen erben
  • Sie können immer noch neu starten müssen einmal den ganzen Server für diese wirksam wird (aber dann werden Sie nicht über Updates in der Zukunft zu kümmern).
  • Logon Leistung beeinträchtigt werden könnte.

Als solche, empfehle ich Ihnen diesen ersten Test vor der Produktion bereitstellen (natürlich).

Neustarten von IIS, nicht die ganze Maschine, sollte es tun.

Wenn die Namen dieser Benutzer geändert wurden, haben Sie nur ihre Namen NT Anmeldung ändern oder ihre UPN-Namen auch? die UPN-Namen sind die Eigennamen, und wird von Kerberos - die das Standardprotokoll für IWA ist; jedoch, wenn Sie klicken Sie einfach auf ihren Namen in ActiveDirectory- zu ändern, nur die NT Loginname ändert - auch wenn das ist, was sie (mit der Standard-Windows-GINA) anmelden verwenden würden. Unter den Abdeckungen würden Fenster die (neuen) Namen NT Anmelden übersetzen in den (alten) Kerberos-Namen. Diese bleibt bestehen, bis AD gezwungen wird, um den Kerberos-Namen zu aktualisieren, nach dem NT Loginnamen ...

Dieser Link "Ändern des Standardintervalls für Benutzertokens in II" von Microsoft Support  helfen soll.

auf den Server anmelden, der die IIS mit dem neuen Login-Namen in Frage läuft. Dies wird die Berechtigung aktualisieren, ohne Neustart IIS oder Neustart des Servers.

So wie ein FYI hatten wir genau das gleiche Problem. Was schien für uns zu arbeiten, ist in Active Directory zu gehen und einen „Refresh“. Unmittelbar danach hatten wir den Anwendungspool auf den Intranet-Site zu recyceln, die dieses Problem hatten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top