Hi all,

we are currently using CAS 5.3.3 and recently expierienced that a user is 
able to create multiple SSO sessions (Ticket granting tickets) by doing the 
following:

1. Open one service (SERVICE_1) which is using the CAS SSO in one tab 
(TAB_1). The user is then redirected to the CAS Login page but *does not 
login* yet!
2. Open another service (SERVICE_2) which is using the CAS SSO in a second! 
tab (TAB_2). The user is then redirected to the CAS Login page, logs in and 
is redirected to the service. CAS creates a SSO session with the 
authenticated service (SERVICE_1).
3. Go back to TAB_1 and login. CAS creates a second SSO session with the 
authenticated service (SERVICE_2)

As result *two *sessions exist. This is a behaviour we didn't expect. Since 
we are also using the single logout this result in the problem that when 
logging off only one of the SSO sessions is terminated and as consequence 
the BACK_CHANNEL logout request is only send to one service and the user is 
still logged on at the other.

Technically we saw that the existing TGT cookie is actually ignored when 
submitting the user credentials if it didn't exist when opening the login 
page. 

For now we solved this by changing the login-webflow.xml to make sure that 
the initialFlowSetupAction is also executed when submitting the user 
credentials:



    <view-state id="viewLoginForm" view="casLoginView" model="credential">
        <binder>
            <binding property="username" required="true"/>
            <binding property="password" required="true"/>
        </binder>
        <transition on="submit" bind="true" validate="true" 
to="initialFlowSetupAction" history="invalidate"/>
    </view-state>

    <action-state id="initialFlowSetupAction">
        <evaluate expression="initialFlowSetupAction"/>
        <transition on="success" to="checkTicket"/>
    </action-state>

    <action-state id="checkTicket">
        <evaluate expression="ticketGrantingTicketCheckAction"/>
        <transition on="valid" to="hasServiceCheck"/>
        <transition on="invalid" to="realSubmit"/>
        <transition on="notExists" to="realSubmit"/>
    </action-state>

    <action-state id="realSubmit">
        <evaluate expression="authenticationViaFormAction"/>
        <transition on="warn" to="warn"/>
        <transition on="success" to="createTicketGrantingTicket"/>
        <transition on="successWithWarnings" 
to="showAuthenticationWarningMessages"/>
        <transition on="authenticationFailure" 
to="handleAuthenticationFailure"/>
        <transition on="error" to="initializeLoginForm"/>
    </action-state>


However we are wondering if this behaviour of CAS is intended and if yes, 
what are the reasons behind it.

-- 
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/4e1b5ae3-cb16-4bb8-8eb2-45be5f5e71e1%40apereo.org.

Reply via email to