Toon posts:

[asp.net/vb.net] forms authentication cookie problemen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het lijkt wel alsof ik niets zelf kan als je kijkt naar mij afgelopen posts. Maar goed, ik ben nu eenmaal helemaal enthousiast van asp.net en wil het ook leren.

Maar goed, het volgende probleem is aan de orde:
Ik heb heel netjes de forms authentication in web.config ingesteld en het werkt ook allemaal goed: je komt netjes bij de inlogpagina als je geen rechten hebt. Maar het probleem is dat je nooit op de pagina's komt en je wordt altijd terug gestuurd naar de inlogpagina. Het is dus net of hij de cookie niet pakt. De volgende code wordt uitgevoerd als het inloggen is gelukt:
Visual Basic:
1
2
FormsAuthentication.SetAuthCookie( username.Text, false )
Response.Redirect("index_cms.aspx")

Eerst dacht ik dat ik de session uit had gezet in web.config maar niet dus:
Visual Basic:
1
<sessionState mode="InProc" cookieless="false" timeout="20" />


voor de goede orde hier de complete web.config
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<configuration>
    <system.web>
        <compilation defaultLanguage="vb" debug="true" />
        <customErrors mode="Off" />
        <authentication mode="Forms">
                <forms name="AuthCookie"
                    path="cmc"
                    loginUrl="cmc/login.aspx"
                    protection="All"
                    timeout="30">
                 </forms>
        </authentication>
        <authorization>
          <allow users="*" />
        </authorization>
        <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
        <sessionState mode="InProc" cookieless="false" timeout="20" />
        <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
    </system.web>
    <location path="cmc">
      <system.web>
            <authorization>
              <deny users="?" />
            </authorization>
      </system.web>
    </location>
</configuration>


iemand een idee hoe dit komt?

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:52
In plaats van de Response.Rederict kan je de FormsAuthentication.RedirectFromLoginPage gebruiken als de user goed ingelogged is.
Op de manier waarop jij het doet, zal het cookie niet goed weggeschreven worden. Als je RederictFromLoginPage niet wilt gebruiken, zal je zelf met het AuthenticationTicket oid aan de slag moeten gaan. Ik zou eens in m'n code moeten duiken voor een voorbeeldje, wat ik later eens zal doen.

Zoiets dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
authTicket = new FormsAuthenticationTicket(1, _userInfo.UserName,
                                   DateTime.Now, DateTime.MaxValue,
                                   true, _userInfo.UserId.ToString());
                                                               
authCookie          = new HttpCookie(FormsAuthentication.FormsCookieName);
authCookie.Value    = FormsAuthentication.Encrypt(authTicket);
authCookie.Expires  = DateTime.MaxValue;
                    
Response.Cookies.Add(authCookie);

redirectUrl = FormsAuthentication.GetRedirectUrl(_userInfo.UserName, true);
                    
Response.Redirect(redirectUrl);

[ Voor 40% gewijzigd door whoami op 25-09-2004 14:12 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
met FormsAuthentication.RedirectFromLoginPage krijg ik nog steeds hetzelfde

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:52
Waar staat je login-pagina?
De beveiligde content staat in een andere map?

https://fgheysels.github.io/


Verwijderd

code:
1
2
3
4
5
6
7
8
    </system.web>
    <location path="cmc">
      <system.web>
            <authorization>
              <deny users="?" />
            </authorization>
      </system.web>
    </location>


zo en zo staat zijn location al buiten system.web en de <forms auth> erbinnen. Volgens mij is dat niet precies de volgorde (ben te lui om vs.net op te starten) ook staat je login pagina in de beveiligde dir, en die moet er volgens mij buiten staan.

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:52
Verwijderd schreef op 25 september 2004 @ 14:58:
ook staat je login pagina in de beveiligde dir, en die moet er volgens mij buiten staan.
Dat dacht ik ook, vandaar dat ik dat vroeg.
Ik zou de login pagina in een andere subdirectory zetten, en die subdirectory geef je dmv een location section 'alle toegang', terwijl de andere, daar waar de content staat beveiligd is.

https://fgheysels.github.io/


Verwijderd

Topicstarter
heb het met cookies geprobeerd en dan doet ie het wel, alleen doet FormsAuthentication.SignOut het niet meer volgens mij

mijn loginpagina staat inderdaad in de beveiligde dir .. ik zal het even proberen om deze er buiten te zetten

Ik heb even geprobeerd om de login buiten de dir zetten maar het heeft geen resultaat. Ik heb de login pagina in de root gezet. Ik heb niets met de rechten van de root in de web.config gezet, dus iedereen heeft gewoon de standaard rechten.

[ Voor 35% gewijzigd door Verwijderd op 25-09-2004 15:12 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:52
Verwijderd schreef op 25 september 2004 @ 15:09:

Ik heb even geprobeerd om de login buiten de dir zetten maar het heeft geen resultaat. Ik heb de login pagina in de root gezet. Ik heb niets met de rechten van de root in de web.config gezet, dus iedereen heeft gewoon de standaard rechten.
Gewoon om te testen: doe dat eens omgekeerd: je root beveiligd maken, en je login-pagina in een andere directory.

https://fgheysels.github.io/


Verwijderd

Topicstarter
heb de web.config veranderd: voor de root heb ik nu ingesteld:

<deny users="?"/>

alleen kan ik nog gewoon de root bekijken ..

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:52
Verwijderd schreef op 25 september 2004 @ 15:23:
heb de web.config veranderd: voor de root heb ik nu ingesteld:

<deny users="?"/>

alleen kan ik nog gewoon de root bekijken ..
Wat heb je ingesteld voor je login-pagina en waar staat die login-pagina?

Trash trouwens eens al je cookies. Wellicht zal er een authentication-ticket in je root staan waardoor je die nu gewoon kunt zien (je bent dus ingelogged).

https://fgheysels.github.io/


Verwijderd

Topicstarter
ik heb de loginpagina in de dir login gezet en heb die verwijzing ook in de web.config doorgevoerd. Ik zie alleen de volgende regel:
code:
1
<forms name="AuthCookie"  path="cmc" loginUrl="login/login.aspx" protection="All" timeout="30"></forms>


daar heb ik dus een path opgegeven. Is die verplicht, want je geeft ook al met authorization aan welke dir je mag komen en niet.
Ik heb alle cookies verwijderd dus zal de authentication-ticket al verwijderd zijn.

Ik vind het allemaal heel vreemd ..

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:52
Die path is alleszins niet verplicht.
De loginUrl attribute zou al voldoende moeten zijn.

https://fgheysels.github.io/


Verwijderd

Topicstarter
hij doet het nu wel. Nu de login in een andere dir staat doet hij het wel. Maar ik vind het maar vreemd dat hij dan in de root het niet doet. En kan je de loginpagina echt niet in de beveiligde directory zetten dan? dat is toch vreemd ..

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:52
Verwijderd schreef op 25 september 2004 @ 15:43:
hij doet het nu wel. Nu de login in een andere dir staat doet hij het wel. Maar ik vind het maar vreemd dat hij dan in de root het niet doet. En kan je de loginpagina echt niet in de beveiligde directory zetten dan? dat is toch vreemd ..
Dat zal je wel kunnen doen denk ik. (ASP.NET is al een tijdje geleden). (Ik ben er eigenlijk zeker van dat je het wel kunt doen).
Echter, die 'url' attribute is wel verwarrend, met die attribute geef je niet aan wat je beveiligd dacht ik.

https://fgheysels.github.io/


Verwijderd

wat je ook kunt doen is in elke dir die je wilt beveiligen een eigen web.config bestandje zetten met alleen het deny gedeelte. Voor de rest moet je path volgens mij /cmc/ zijn en niet cmc, heb ik ook eens problemen mee gehad. En zoals ik al eerder zei zat je web.config niet helemaal juist in elkaar, maar dat kan ook aan mij liggen.
Pagina: 1