none
Odhlašování uživatelů - Ověření formulářů se pro požadavek nezdařilo.

    Dotaz

  • Provozuji ASP.NET 2.0 aplikaci, ke které se uživatelé přihlašují klasicky přes formulář. Můj problém spočívá v náhodném občasném odhlašování uživatelů. Najednou nejsou odhlášeni všichni uživatelé, ale vždy pouze nějaký z aktuálně přihlášených uživatelů.

    Odhlášení uživatele je zalogováno s následujícím záznamem v logu:

    Event code: 4005
    Event message: Forms authentication failed for the request. Reason: The ticket supplied has expired.
    Event time: 8/28/2009 9:39:48 AM
    Event time (UTC): 8/28/2009 7:39:48 AM
    Event ID: 23ceff4b7769472894998f1c74ae751e
    Event sequence: 6087
    Event occurrence: 56
    Event detail code: 50202
     
    Application information:
        Application domain: /LM/W3SVC/1/Root/PROFA-1-128958985290921518
        Trust level: Full
        Application Virtual Path: /
        Application Path: C:\Inetpub\wwwroot\
        Machine name: PROFA 
     
    Process information:
        Process ID: 3972
        Process name: w3wp.exe
        Account name: PROFA\web
     
    Request information:
        Request URL: http://localhost/event.aspx
        Request path: /event.aspx
        User host address: 10.0.0.1
        User: 
        Is authenticated: False
        Authentication Type: 
        Thread account name: PROFA\web
     
    Name to authenticate: 
     
    Custom event details:

    For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

    Aplikace je provozována na Windows Server 2003 s IIS 6.0 a .NET Frameworkem 2.0.50727. Server není konfigurován pro práci ve farmě - uživatelé přistupují pouze k jednomu serveru. V rámci IIS serveru je však provozováno více nezávislých aplikací.

    Z web.configu vybírám dle mého zajímavé a podstatné údaje:

    <machineKey validationKey="xxx" validation="MD5" decryptionKey="xxx" />

    <authentication mode="Forms">
      <forms loginUrl="Login.aspx" protection="All" slidingExpiration="true" timeout="30" />
    </authentication>

    <sessionState mode="InProc" cookieless="false" timeout="30" />


    Neřešil jste prosím někdo podobný problém, resp. máte nějaké nápady, jak analyzovat a řešit tento problém?

    Předem všem děkuji za jakékoliv náměty.

    28. srpna 2009 8:02

Odpovědi

  • Nevzpomínám si, že bych se s tou chybovou hláškou přímo setkal, nicméně evidentně se authentizačnímu modulu dostane authentizační ticket, který již expiroval. U Vašeho nastavení lze předpokládat, že máte authentizační ticket standardně uložen v cookie, tedy bych si ověřil, že dochází k automatickému prodlužování platnosti authentizačního ticketu (v requestu, který je zhruba po polovině doby platnosti ticketu, 15 minutách, by měl Váš uživatel dostat novou authentizační cookie - s prodlouženou expirací v ní obsaženého authentizačního ticketu).
    Taky bych ověřil scénář použití, jestli vůbec má šanci ten authentizační ticket se včas prodloužit, tedy především že vůbec v době platnosti authentizačního ticketu proběhne nějaký regulérní request uživatele na webový server (nemáte tam samý AJAX, nebo Silverlight, nebo něco takového?).
    Robert Haken, Microsoft MVP ASP/ASP.NET, HAVIT, s.r.o., www.havit.cz, http://knowledge-base.havit.cz
    17. února 2010 19:25
    Moderátor