6.6. SSO with OneConnect Setup

This section describes setting up Single Sign On (SSO) in EasyAccess when connecting to resources behind a NetWall firewall through the Clavister OneConnect SSL VPN client. Usually, the target web page after successful OneConnect connection will be an EasyAccess MyApps web page. However, an external landing webpage could be used instead. The aim is to have the user land on the target webpage after successful OneConnect connection and then be able to open any of the service providers on the webpage without further authentication.

A Summary of authentication processing steps with OneConnect

The processing sequence with OneConnect would be the following:

  1. A user starts the OneConnect SSL VPN app on their device and tries to connect to a Netwall firewall using their username and password.
  2. cOS Core is set up to authenticate the user by sending a RADIUS authentication request to an EasyAccess RADIUS scenario. Successful authentication could be based only on username/password credentials but EasyAccess may be configured to use a multifactor RADIUS authentication option, such as using OneTouch. The multifactor authentication option can be added as required to the EasyAccess scenario but will not be discussed further in this section.

    Note that once OneConnect is started, all the traffic from the client will go through the SSL VPN tunnel so cOS Core must be configured to allow this traffic to flow between the VPN tunnel and EasyAccess server. The server might be located locally to the NetWall device or it could be located remotely across the Internet.

  3. The EasyAccess server performs normal RADIUS authentication on the user. The RADIUS scenario that handles authentication is configured to creates a unique UUID which is bound to a persistent user session so the user need not authenticate again later.

  4. The EasyAccess server sends a URL back to cOS Core as part its RADIUS response with the UUID added to it. This URL is preconfigured as part of the RADIUS scenario setup and it points to the identity provider of a federation scenario on the EasyAccess server. Pointing directly back to the identity provider in this way simplifies the setup steps.

  5. The URL is forwarded back to the OneConnect client by cOS Core as part of the successful authentication response. This is standard cOS Core behavior and does not need to be configured.

  6. The URL is automatically opened by the OneConnect client in the user's default web browser.

  7. The browser connects to the EasyAccess server and the target identity provider give the browser a SAML assertion based on the UUID in the URL without further authentication being needed. This exchange will not be visible to the user.

  8. Once it has the SAML assertion, the client browser is redirected to the default service provider URL that has been set for the identity provider. This is typically a MyApps webpage on the EasyAccess server that provides access to different service providers. However, it could be a specific external service provider.

  9. The target webpage accepts the user as authenticated based on the SAML assertion in the browser.

  10. Authentication for the target webpage will persist throughout the browser session. If the browser is closed, this is lost.

Below are the detailed steps for setting up EasyAccess with OnConnect.

A. Set Up cOS Core for RADIUS Authentication of OneConnect

It will be assumed in this section that cOS Core has been correctly configured to authenticate incoming connections from OneConnect clients using RADIUS and that the RADIUS server used is the EasyAccess server.

Configuring cOS Core to do this is described in the SSL VPN section of the separate cOS Core Administration Guide..

B. Create a RADIUS Scenario

A new RADIUS scenario must be created to authenticate the OneConnect client. Creating a basic senario is described in Section 5.1, Basic RADIUS Scenario Setup. The RADIUS scenario could use one of the multi-factor authentication options, such as that described in Section 5.2, RADIUS with Token Scenario Setup

C. Change the list of RADIUS scenario valves

Particular valves nust be set up in the RADIUS scenario in a specific order.

First, open the scenario for editing in the EasyAccess WebUI and select the Execution Flow tab. By selecting the Show link, the default list of valves will be displayed. The typical RADIUS scenario list valve is shown below.

RADIUS Scenario Valve List

Figure 6.26. RADIUS Scenario Valve List

This list must be modified to contain the following valve types and in the following order:

To create the above valve list, the following steps are required:

D. Specify the vendor specific attribute

Using the scenario editor in the WebUI, select the Advanced tab for the RADIUS scenario and set the vendor specific attribute. This specifies where to find the URL that will be sent to the OneConnect client after successful authentication. In the screenshot below the value "clavister-url" refers to the value parameter string in the PropertySetValve created previously. The value 5089 is the vendor ID for Clavister and the type value 4 must be used with OneConnect.

Setting the Vendor Specific Attribute

Figure 6.27. Setting the Vendor Specific Attribute

E. If not MyApps, create a new Federation Scenario

If the target webpage for SSO is not a MyApps page, create a simple federation scenario as described in Section 6.1, Basic Federation Scenario Setup and also upload into EasyAccess the SAML SP Metadata for the service provider.

If the target webpage is an EasyAccess MyApps page, no metadata upload is required but the MyApps scenario will have to be set up. Doing this is described in Section 6.5, MyApps Setup.

F. Add the SAML authenticator

A SAML authenticator must be defined that the OneConnect client redirects to. This is done in the WebUI by selecting the Advanced tab and clicking the pen icon next to the Authentication - HTTP option, as shown below.

Defining a SAML Authenticator

Figure 6.28. Defining a SAML Authenticator

Define a HeaderSAML authenticator by adding the following JSON anywhere.

{
  "alias": "samldispatch",
  "name": "HeaderSAML",
  "configuration": {
    "idpID": "f1dab3a5-02a0-43c6-afef-9d8e39323eb3",
    "pipeID":"tokenPipe"
  }
},

Note that the idpID value must be a SAML identity provider. Another federation scenario might have to be created in order to get this SAML identity provider.

F. Add the tokenPipe

To add the new pipe referred to by the HeaderSAML authenticator created above. click the pen next to Pipes in the Advanced options.

Edit Pipes

Figure 6.29. Edit Pipes

Enter the following JSON anywhere to define the new pipe called tokenPipe.

{
  "id": "tokenPipe",
  "valves": [
    {
      "name": "SessionLoadByAliasValve",
      "config": {
        "aliasid": "{{request.accesstoken}}",
        "require_session": "true",
        "require_auth_session": "false"
      }
    },
	{
      "name": "LDAPSearchValve",
      "enabled": "true",
      "config": {
        "connection_ref": "bbd7198c-0a6c-43aa-b62b-cd7552c8b4cf",
        "base_dn": "dc=your,dc=base,dc=change,dc=com",
        "scope": "SUB",
        "size_limit": "0",
         "filter_template": "uid={{session.user_id}}"
      }
    },
    {
      "name": "AssertionProvider",
      "config": {
        "targetEntityID": ""f1dab3a5-02a0-43c6-afef-9d8e39323eb3",
        "nameIDAttribute": "uid",
        "sourceID": "myapps",
      }
    },
    {
      "name": "SessionClearAllAliasValve",
      "config": {}
    }
  ]
},

The pipe tokenPipe contains the following valves: