Skip to main content

Support Article

SAML timeout does not redirect to login page

SA-22902

Summary



SAML timeout does not redirect to login page.


Error Messages



Pega application does not get redirected to login page after time out. User cannot do any action on the screen.


Steps to Reproduce

  1. Enable Pegarules timeout as suggested in PDN Article : https://pdn.pega.com/support-articles/saml-timeout-activity-not-being-triggered
  2. Set the timeout to two minutes in User Access group


Root Cause



A defect or configuration issue in the operating environment.

Resolution



Perform the following local-change: 
 

1.  Copy the Out of the Box pxSessionTimer and rename to SessionTimer<ProjectName>.
2.  Replace the HTML tab HTML source as follows and save the SessionTimer<ProjectName> to the own ruleset.


<% /* BEGIN : REQUIRED FOR GADGET FUNCTIONALITY. DO NOT TOUCH BELOW LINES.*/%>
<pega:when test="pxRequestor.pyPegaDesignMode == 'true'">
    <%ClipboardPage pyDefaultParams = tools.createPage("PegaGadget-SessionTimeoutMgr","myParamPage");
    pyDefaultParams.adoptXMLForm("<?xml version=\"1.0\"?><pagedata><pxObjClass>PegaGadget</pxObjClass></pagedata>");%>
</pega:when>
<pega:include name='pzGadgetInclude'/>
></div>

<% ClipboardPage pyPortalPage = tools.findPage("pyPortal");
ClipboardPage myParamPage = tools.findPage("myParamPage");
String pyTimeoutTime = myParamPage.getString("pyTimeoutTime");
String pyTimeoutWarningWindow = myParamPage.getString("pyTimeoutWarningWindow");
String pyTimeoutPopupType= myParamPage.getString("pyTimeoutPopupType");
String warningMsg = tools.getLocalizedTextForString(".pyMessageLabel","TimeoutWarning");

pyPortalPage.putString("pyTimeoutTime",pyTimeoutTime);
pyPortalPage.putString("pyTimeoutWarningWindow",pyTimeoutWarningWindow);
pyPortalPage.putString("pyTimeoutPopupType",pyTimeoutPopupType);
%>

<script>
pega.d.TimeoutTime = '<%=pyTimeoutTime%>';
pega.d.TimeoutWarningWindow = '<%=pyTimeoutWarningWindow%>';
pega.d.TimeoutPopuptype = '<%=pyTimeoutPopupType%>';
pega.d.TimeoutPopupHeight = "<pega:lookup className="Rule-Obj-FieldValue" property="pyLocalizedValue"><pega:key name="pyClassName" value ="Rule-Portal" /><pega:key name="pyFieldName" value="pyTimeoutPopupType" /><pega:key name="pyFieldValue" value="WindowHeight" /></pega:lookup>";
pega.d.TimeoutPopupWidth = "<pega:lookup className="Rule-Obj-FieldValue" property="pyLocalizedValue"><pega:key name="pyClassName" value ="Rule-Portal" /><pega:key name="pyFieldName" value="pyTimeoutPopupType" /><pega:key name="pyFieldValue" value="WindowWidth" /></pega:lookup>";
pega.d.TimeoutWarning = '<%=warningMsg%>';


/*needed for CPM portals only but safe for all types of portals*/
if (pega.d.TimeoutWarningCountdown != null) {
    console.log("clearing timer [load]: " + pega.desktop.TimeoutWarningCountdown);
    clearTimeout(pega.desktop.TimeoutWarningCountdown);
}
pega.d.TimeoutWarningCountdown = null;


function desktop_restartTimeoutWarningTimer(){
        if (pega.desktop.TimeoutTime && pega.desktop.TimeoutTime > 0) {
        /* Calculate the time to initial warning in milliseconds*/
        var nTimeoutWarningTime= (pega.desktop.TimeoutTime - pega.desktop.TimeoutWarningWindow) * 60000;

        /* Clear the existing countdown */
                console.log("clearing timer [action]: " + pega.desktop.TimeoutWarningCountdown);
        clearTimeout(pega.desktop.TimeoutWarningCountdown);
        if (nTimeoutWarningTime >= 0) {
                        console.log("setting timer: "+ pega.desktop.TimeoutWarningCountdown);
            pega.desktop.TimeoutWarningCountdown = self.setTimeout("desktop_showTimeoutWarningCUSTOM()", nTimeoutWarningTime);
    
        }
    }    
}

function desktop_showTimeoutWarningCUSTOM() {
    window.focus();
    /* Dynamically create the html for the warning because we don't want to go to the server */
    
         alert(pega.d.TimeoutWarning);

         var oSafeUrl=new SafeURL("@baseclass.CheckServerConnection");
    oSafeUrl.put("Close","true");

    /* Test server connection in a new window so content won't be lost even with a proxy server */
    openUrlInWindow(oSafeUrl.toURL(),null,"height=" + pega.d.TimeoutPopupHeight + ",width=" + pega.d.TimeoutPopupWidth + ",top=100,left=200,status=yes,toolbar=no,menubar=no,location=no");
    
        /* Start timer again */
    desktop_restartTimeoutWarningTimer();
}


</script>


<pega:include name='pzGadgetInclude_End'/>
<% /* END : REQUIRED FOR GADGET FUNCTIONALITY. DO NOT DELETE ABOVE LINE.*/%>
 

Suggest Edit

Published May 13, 2016 - Updated October 8, 2020

Did you find this content helpful? Yes No

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.

Ready to crush complexity?

Experience the benefits of Pega Community when you log in.

We'd prefer it if you saw us at our best.

Pega Community has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice
Contact us