Citrix Professionals Network Discussion Forum - provided by Actu8 IT Pty Ltd (www.actu8.com)
News:
 
*
Welcome, Guest. Please login or register. September 06, 2010, 06:19:08 PM


Login with username, password and session length

Pages: [1]
  Print  
Author Topic: workspace control does not work when passing credentials through to WI  (Read 2078 times)
Nathan Anthony
Administrator
Member
*****
Offline Offline

Posts: 56



View Profile WWW
« on: September 26, 2006, 04:50:24 AM »

When using a third party portal or application to pass user credentials onto the Web Interface logon page you may find that Workspace control and therefore session reliability does not work. This is because the passing of these credentials to the logon.aspx part of Web Interface can bypas the two GET commands which check to see if the ICA client is installed on the client device. In bypassing these GET commands Web Interface assumes that no client is installed and therefore never presents any applications for reconnection.

In order to resolve this issue you will need to force the GET command to return a value that always says the ICA client is installed. As a result this will remove the ability to detect what clients, if any are currently instaleld on the client device.

Use the following instructions to alter this behavior, so that workspace control is enabled even when the ICA Client is not present. The risk is that if a user accesses web interface from Firefox running within an ICA session, the workspace control actions could disconnect the very session in which Firefox runs. The effect could also spill over to Internet Explorer users if they access WI from within an instance of published IE running on a Presentation Server where the ICA client is not installed. 

For Web Interface 4.2

Perform the following script change in both of these files:
1.   <site-root>/auth/serverscripts/include.cs
2.   <site-root>/site/serverscripts/include.cs

Locate the following function starting at line 194:

public int workspaceControlEnabled() {
    int result = RC_DISABLED;

    // Only consider enabling Workspace Control if Web Interface was
    // not accessed as a resource embedded in the AGE Navigation Page
    // ('Indirect' or 'Embedded' AGE Access Modes).
    if (( getAGEAccessMode() != AGEAccessMode.INDIRECT ) && ( getAGEAccessMode() != AGEAccessMode.EMBEDDED )) {
        if ( getWorkspaceControlConfiguration().getEnabled() ) {
            // It is enabled in the configuration file, checks whether we are
            // running in a pass-through mode.
            string icoDetection = sClientInfo.osPocketPC() ? VAL_ICO_NOT_PASS_THROUGH
                : (string) getUserEnvAdaptor().getClientSessionState().get(COOKIE_ICA_CLIENT_PASS_THROUGH);
            if (icoDetection == VAL_ICO_NOT_PRESENT) {
                // ICO is not present, we check whether we are using Java
                // Client. If we are, we enable Workspace Control.
                result = RC_JAVACLIENT_ONLY;
            } else {
                // We are not running in pass-through, enable Workspace Control.
                result = (icoDetection == VAL_ICO_NOT_PASS_THROUGH) ? RC_ENABLED : RC_DISABLED;
            }
        }
    }

    return result;
}
 
Change the result for when icoDetection == VAL_ICO_NOT_PRESENT to return RC_ENABLED instead of RC_JAVACLIENT_ONLY as shown in red below:
   
public int workspaceControlEnabled() {
    int result = RC_DISABLED;

    // Only consider enabling Workspace Control if Web Interface was
    // not accessed as a resource embedded in the AGE Navigation Page
    // ('Indirect' or 'Embedded' AGE Access Modes).
    if (( getAGEAccessMode() != AGEAccessMode.INDIRECT ) && ( getAGEAccessMode() != AGEAccessMode.EMBEDDED )) {
        if ( getWorkspaceControlConfiguration().getEnabled() ) {
            // It is enabled in the configuration file, checks whether we are
            // running in a pass-through mode.
            string icoDetection = sClientInfo.osPocketPC() ? VAL_ICO_NOT_PASS_THROUGH
                : (string) getUserEnvAdaptor().getClientSessionState().get(COOKIE_ICA_CLIENT_PASS_THROUGH);
            if (icoDetection == VAL_ICO_NOT_PRESENT) {
                // ICO is not present, we check whether we are using Java
                // Client. If we are, we enable Workspace Control.
                result = RC_ENABLED;
            } else {
                // We are not running in pass-through, enable Workspace Control.
                result = (icoDetection == VAL_ICO_NOT_PASS_THROUGH) ? RC_ENABLED : RC_DISABLED;
            }
        }
    }

    return result;
}

Changes are effective immediately as soon as the modified include.cs file is saved.

 
For Web Interface 4.0

Perform the following script change in both of these files:
3.   <site-root>/auth/serverscripts/include.cs
4.   <site-root>/site/serverscripts/include.cs

Locate the following function starting at line 129:

public int workspaceControlEnabled() {
    int result = RC_DISABLED;

    if ( getWorkspaceControlConfiguration().getEnabled() ) {
        // It is enabled in the configuration file, checks whether we are
        // running in a pass-through mode.
        string icoDetection = sClientInfo.osPocketPC() ? VAL_ICO_NOT_PASS_THROUGH
            : getCookie(COOKIE_ICA_CLIENT_PASS_THROUGH);
        if (icoDetection == VAL_ICO_NOT_PRESENT) {
            // ICO is not present, we check whether we are using Java
            // Client. If we are, we enable Workspace Control.
            result = RC_JAVACLIENT_ONLY;
        } else {
            // We are not running in pass-through, enable Workspace Control.
            result = (icoDetection == VAL_ICO_NOT_PASS_THROUGH) ? RC_ENABLED : RC_DISABLED;
        }
    }
    return result;
}

 
Change the result for when icoDetection == VAL_ICO_NOT_PRESENT to return RC_ENABLED instead of RC_JAVACLIENT_ONLY as shown in red below:

public int workspaceControlEnabled() {
    int result = RC_DISABLED;

    if ( getWorkspaceControlConfiguration().getEnabled() ) {
        // It is enabled in the configuration file, checks whether we are
        // running in a pass-through mode.
        string icoDetection = sClientInfo.osPocketPC() ? VAL_ICO_NOT_PASS_THROUGH
            : getCookie(COOKIE_ICA_CLIENT_PASS_THROUGH);
        if (icoDetection == VAL_ICO_NOT_PRESENT) {
            // ICO is not present, we check whether we are using Java
            // Client. If we are, we enable Workspace Control.
            result = RC_ENABLED;
        } else {
            // We are not running in pass-through, enable Workspace Control.
            result = (icoDetection == VAL_ICO_NOT_PASS_THROUGH) ? RC_ENABLED : RC_DISABLED;
        }
    }
    return result;
}


Changes are effective immediately as soon as the modified include.cs file is saved.

NOTE.
As with any customizations these are not supported by Citrix.
Logged

Nathan Anthony
www.actu8.com
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1 RC2 | SMF © 2001-2005, Lewis Media

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM