Loading…
Tilbage

Profilbillede

The SessionIndex of the LogoutRequest does not match the Authentication Ticket

Kell Sønnichsen

Ovenstående fejl får jeg, når jeg tester mod NemLog-in testmiljøet, i følgende scenarie:

Vi har to systemer A og B. Dertil er der IdP testlogin (https://sp1.test-nemlog-in.dk/demo/), N.

Når jeg logger ind i to vilkårlige af systemerne, bliver den første korrekt viderestillet til NemLog-in, og den næste kommer jeg direkte ind i pga. SSO. Så langt så godt.

Når jeg logger ud på et vilkårligt af de to systemer, får jeg ovenstående fejl. Samme fejl får jeg på det andet af de to systemer, når jeg efterfølgende logger ud der.

Det ser ud til, at jeg er logget ud - i hvert fald næsten. For starter jeg forfra, skal jeg igen igennem NemLog-in på A og B. Men sessionen i N ser ud til at overleve; der er jeg fortsat logget ind.

Når jeg logger ind i kun den ene af A, B eller N og logger ud igen, er der ingen problemer.

Fuldt stacktrace fra Log-viewer:
System.ApplicationException: Logout Request Denied Category=ErrorLog EventId=0 Severity=Error ExceptionMessage=The SessionIndex of the LogoutRequest does not match the Authentication Ticket ExceptionStackTrace= at DK.OES.KFOBS.Nemlogin.Backend.IdentityProvider.Service.NemLoginIdentityProviderService.ValidateLogoutRequest(LogoutRequestType message, String nameId, String authTicket, Boolean isAuthTicketActive) at DK.OES.KFOBS.Nemlogin.Backend.IdentityProvider.Service.NemLoginIdentityProviderService.InitiateLogout(MessageEnvelope envelope, IList`1 samlSessions, String authTicketNameId, String authTicket, Boolean isAuthTicketActive)

Jeg burde måske lige tilføje, at den fejl, vi får er hos NemLog-in: https://test-nemlog-in.dk/LogoutError.aspx med den sædvanlige meddelelse: 

A technical error occurred during log out

It was not possible to log out correctly. Close all browser tabs before continuing.

 

Hej Kell,

Når du nu har begået dig ulejligheden at finde loggen frem i LogViewer så vil det være værdsat at du også viderebringer CorrelationID og/eller et tidspunkt så det bliver lidt hurtigere at gennemsøge loggen.

Fejlen opstår fordi der er uoverenstemmelse imellem den session browseren tror den har med test-nemlog-in.dk og den session der angives i LogoutRequest. Jeg er på nuværende tidspunkt ikke sikker på, hvorfor det skulle være at SessionIndex der skulle have ændret sig, sessionen findes og der ikke noget i loggen der indikerer at den skulle være ændret.

Derfor skal jeg bede genskabe fejlen og kontrollerer hvilke cookies du hhv. modtager og sender når du kommunikerer med test-nemlog-in.dk-domænet i din browser.

Jeg selv prøvet at genskabe problemet med SP1 og SP2 som stilles tilrådighed uden held, så der skal mere information til.

Med venlig hilsen
Morten D. Bech

Tillad et spørgsmål fra en der ikke har dyb indsigt, men alligevel en vis interesse.

Kan problemet være "browserafhængigt". Mine kolleger oplevede på et tidspunkt i et af vore indkøbte systemer oplevet at sesssioner blev "krydset", hvis man var logget ind flere gange i samme program og udførte tilsvarende arbejdsrutiner på forskellige sæt data. Jeg mener at huske - men er ikke sikker - at det var bundet til browseren - uden at jeg heller kan huske hvilken.

Blot en tanke.

/Klaus 

Hej Klaus,

Det du tænker på er muligvis brugen af ForceAuthn, hvor der foretages en ny autentifikation i NemLog-in, men der burde ikke blive etableret en session af det.

Anyway, jeg har ikke testet det scenarie, da jeg ikke 100% sikker at det er det scenarie du beskriver.

Faktum er at der skal være overenstemmelse imellem den session der angives i LogoutRequest og den session NemLog-in detekterer den har med browseren.

Med venlig hilsen
Morten D. Bech

Hej Morten.

Jeg ville gerne genskabe fejlen, men i dag får jeg en helt anden fejl, der tyder på noget mix up af namespaces i den UserAssertion, der sendes fra NemLog-in tilbage til os efter login. Vi bruger OIOSAML referenceimplementationen, version 2.1.0:


 ERROR [dk.itst.oiosaml.oiobpp.OIOBPPUtil] (default task-1) Failed to parse input string: urn:dk:stil:brugeroversigt:brugeroversigt_user: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://itst.dk/oiosaml/bas
ic_privilege_profile", local:"PrivilegeList"). Expected elements are <{http://digst.dk/oiosaml/basic_privilege_profile}PrivilegeList>

"Det virkede i går" og "jeg har ikke lavet noget om" :-)

 

ændret af Kell Sønnichsen (09.06.2021)

Hej Kell,

Fejlen ligner lidt at der bliver blandet flere ting sammen. XML namespace du får i svaret er for etn OIO SAML 2 privilegieattribut, da den benytter OIO BPP 1.1 profilen og det forventede XML namespace angivet er det der benyttes for en OIO SAML 3 privilegieattribut, da denne benytter OIO BPP 1.2 profilen. Vær opmærksom på denne ændring fra OIO BPP 1.1 til 1.2.

Du har tidligere skrevet at du både tester imod DevTest4 (betatestmiljøet) og Integrationstest, så måske der er gå galt i hvilken OIO SAML version du anvender hvor.

Med venlig hilsen
Morten D. Bech

Hej Morten.

Jeg forsøger ganske rigtigt at få adgang til DevTest4 (OIOSAML 3), men det er ikke lykkedes endnu. Der er vi slet ikke begyndt at teste imod.

I øvrigt er problemet forsvundet igen - af sig selv.

Men det er i stedet afløst af et andet: Timeout i de SOAP request, der sendes til andre services ifm. logout. Det skyldes muligvis firewall i vores ende. Men det er ikke lykkedes mig at finde, hvilke IP-numre fra test-systemet, der skal være åbent for?

(Denne gang får du hele fejlen fra logviewer)

LogId=20210611093254-6893 UtcTimestamp=11-06-2021 07:32:54.248 LocalTime=11-06-2021 09:32:54.248 User= UserIp= OperationId=3909 MachineName= SessionId= ApplicationName=IdentityProvider.Web CorrelationId=10d74d32-7337-4b4a-80f3-195e6ec8879f Message=System.ApplicationException: Error sending SOAP request to SP Category=ErrorLog EventId=0 Severity=Error EntityId=https://saml.brugeroversigt.stil.dk RequestResponseCorrelationId=10d74d32-7337-4b4a-80f3-195e6ec8879f Destination=https://brugeroversigt-ft.stil.dk/brugeroversigtBE/saml/LogoutServiceSOAP Exception=The operation has timed out InnerException= StackTrace= at System.Net.HttpWebRequest.GetResponse() at DK.OES.KFOBS.Nemlogin.Common.IdentityModel.Protocols.Saml2.Bindings.SOAPBinding.SendReceiveMessage(MessageEnvelope envelope, Int32 timeout) at DK.OES.KFOBS.Nemlogin.Frontend.IdentityProvider.HandlerModule.LogoutHandler.LogoutSoapServiceProviders(INemLoginIdentityProviderService service, IEnumerable`1 logoutEnvelopes, IList`1 samlSessions, Authentication authentication) 

Hej Kell,

Det behøves bestemt ikke at være i jeres ende problemet ligger i denne sammenhæng da det jo er IdP'en der initierer trafikken.

Så i første omgang vil jeg bede NNIT sikre at udegående HTTPS trafik til internettet fra IdP'en på DevTest4 miljøet er åbent for.

Jeg har ikke IP'en NNIT benytter ved hånden og selvom jeg havde vil jeg nok heller ikke publicerer den i fuld offentlighed. Du er velkommen til at åbne en henvendelse på beta testmiljøet til evt. udveksling af IP'er til åbning hos jer.

Indtil det er på plads vil jeg mene du kan teste videre med Redirect eller POST bindings.

God weekend!

Med venlig hilsen
Morten D. Bech

Hej Morten.

Mine problemer i denne tråd er alle til det eksisterende test setup (https://test-nemlog-in.dk/testportal/) - ikke til det nye DevTest4-miljø, der er i beta.

Hej Kell,

Det er helt i orden, jeg beklager hvis jeg er kommet til at blande det sammen med noget andet fra denne tråd. Det ændrer dog ikke på mit svar - at jeg ikke vil publicerer IP'en i fuld offentlighed.

Jeg vil dog pba. det skriver vedr. hvilket miljøet du anvender test gerne udelukke Integrationstest har problemer med at nå ud til STIL, men som du skriver det nok tilfældet at I ikke tillader indgående trafik.

Mit bedste bud er at du retter direkte henvendelse til DIGST og beder IP'en trafikken kommer fra eller beder din netværksafdeling åbne almindelig HTTPS trafik udefra til tjenesten.

Hvad angår adgang til beta testmiljøet (DevTest4) så finder du mere information om miljøet her: https://migrering.nemlog-in.dk/nemlog-in-broker/test-og-dokumentation/

Med venlig hilsen
Morten D. Bech