This article describes how to install, configure, and use RADIUS authentication with the following versions of SGD:
- Version 4.41
- Version 4.50
See this Secure Global Desktop HOWTO for instructions on how to use RADIUS authentication with SGD version 4.40.
In this article, the mod_auth_radius Apache module from freeradius.org is used to integrate RADIUS with SGD at the web server authentication level. The module acts as a plug-in for the SGD web server, enabling authentication of SGD users to be carried out by a RADIUS server.
Other levels of integration, such as using Pluggable Authentication Modules (PAM) are not covered in this article.
This Sun Learning Exchange video demonstrates the user experience when RADIUS is used to authenticate SGD users.
Configuring SGD to use RADIUS authentication involves the following steps:
Install the Apache Module on the SGD Web Server
Installing the mod_auth_radius Apache module on the SGD web server involves the following steps:
- Obtain the Source Code for the Apache Module
- Prepare the Build Environment on the SGD Host
- Install the Apache Module on SGD 4.41
- Install the Apache Module on SGD 4.50
Obtain the Source Code for the Apache Module
- Download the latest version of the module.
The mod_auth_radius module is available from the the freeradius.org web site.
The examples in this article use version 1.5.8 of the module. Do not use earlier versions of the module, as there are known issues with cookies when using the Firefox browser. - Extract the module source code into a temporary directory on the SGD host.
$ cp mod_auth_radius-1.5.8.tar /tempdir
$ cd /tempdir
$ tar xvf mod_auth_radius-1.5.8.tar
Prepare the Build Environment on the SGD Host
Before you install the mod_auth_radius Apache module on the SGD web server, prepare the build environment on the SGD host, as follows:
- Ensure that openSSL headers are available.
These are usually available in a package called opensssl-devel. - Ensure that the gcc4 compiler is available on the SGD host.
The build process might fail if this compiler is not present. A workaround is to modify the value of CFG_CC used in the apxs command. Alternatively, you can create a symbolic link to the current compiler. For example:ln -s /usr/bin/gcc /usr/bin/gcc4
ls -l /usr/bin/gcc4
lrwxrwxrwx 1 root root 3 2009-05-13 11:29 /usr/bin/gcc4 -> gcc
Install the Apache Module on SGD 4.41
- Use the Apache apxs command to compile and install the module.
# cd /opt/tarantella/webserver/apache/{version}/bin
# ./apxs -i -a -c /tempdir/mod-auth-radius-1.5.8/mod_auth_radius-2.0.cThe mod_auth_radius module is installed in the /modules directory of the SGD web server. A directive enabling the module is added automatically to the httpd.conf file for the SGD web server.
Install the Apache Module on SGD 4.50
When installing the Apache module on SGD 4.50, you must apply some patch files to fix Apache module compilation issues with this version of SGD.
- Obtain the patch files.
The patch files are attached to this wiki page. Click this link to download the files.
You need the following files:- A build directory tar file for your SGD platform. Files are available for each of the supported SGD installation platforms:
- apache_build_i3so.tar for Solaris on x86 platforms
- apache_build_spso.tar for Solaris on SPARC technology platforms
- apache_build_i3li.tar for Linux platforms
- The apache_fix_placeholders.sh script.
- A build directory tar file for your SGD platform. Files are available for each of the supported SGD installation platforms:
- Untar the patch files.
# cp 4.50_patch_files.tar /tempdir
# cd /tempdir
# tar xvf 4.50_patch_files.tar
# cd 4.50_patch_files/ - Untar the build directory tar file for your SGD platform in the SGD web server installation directory.
For example, on Linux platforms:# cp apache_build_i3li.tar /opt/tarantella/webserver/apache/{version}/
# cd /opt/tarantella/webserver/apache/{version}/
# tar xvf apache_build_i3li.tarA build/ directory is created under the current directory.
- Run the apache_fix_placeholders.sh script.
# cd /tempdir/4.50_patch_files
# tar xvf apache_fix_placeholders.tar
# ./apache_fix_placeholders.sh sgdinstalldirwhere sgdinstalldir is the SGD installation directory. This argument is not required if SGD is installed in the default /opt/tarantella location.
The script returns OK if successful. - Use the Apache apxs command to compile and install the module.
# cd /opt/tarantella/webserver/apache/{version}/bin
# ./apxs -i -a -c /tempdir/mod-auth-radius-1.5.8/mod_auth_radius-2.0.cThe mod_auth_radius module is installed in the /modules directory of the SGD web server. A directive enabling the module is added automatically to the httpd.conf file for the SGD web server.
Configure the SGD Web Server for RADIUS Authentication
Configuring the SGD web server for RADIUS authentication involves the following steps:
Modify the httpd.conf File
- Modify the SGD web server httpd.conf file to use RADIUS authentication.
At the end of the httpd.conf file, add the following Include file directive:Include conf/extra/httpd-radius.conf
In the /opt/tarantella/webserver/apache/{version}/conf/extra directory, create a file called httpd-radius.conf.
Add the following directives to the httpd-radius.conf file, where radiusserver is the name of the RADIUS server, and the shared secret used by the RADIUS server and the SGD server is testing123. RADIUS authentication is enabled for the /radius and /sgd directories on the SGD web server.
The AuthRadiusCookieValid directive sets the lifetime of the RADIUS cookie. This must be set to a suitable value, to ensure that the cookie does not expire during the SGD user session. In this example, the cookie lifetime is set to 120 minutes.## RADIUS configuration for SGD # If we're using mod_auth_radius, then add it's specific # configuration options. <IfModule radius_auth_module> # # AddRadiusAuth server[:port] <shared-secret> [ timeout [ : retries ]] # # Use RADIUS server on radiusserver, RADIUS port is 1812, secret is 'testing123', # time out after 5 seconds, and retry 3 times. AddRadiusAuth radiusserver:1812 testing123 5:3 # # AuthRadiusBindAddress <hostname/ip-address> # # Bind client (local) socket to this local IP address. # The server will then see RADIUS client requests will come from # the given IP address. # By default, the module does not bind to any particular address, # and the operating system chooses the address to use. # # # AddRadiusCookieValid <minutes-for-which-cookie-is-valid> # The special value of 0 (zero) means the cookie is valid forever. # AddRadiusCookieValid 120 </IfModule> # Third party authentication # Use RADIUS authentication for the locations below SetEnvIf Request_URI "\.(class|cab|jar|gif|der)$" sgd_noauth_ok <Location /radius > Order Allow,Deny AuthType Basic AuthName "RADIUS Test Page" AuthBasicAuthoritative off AuthRadiusAuthoritative on AuthRadiusCookieValid 120 AuthRadiusActive On AuthUserFile /dev/null Require valid-user Satisfy any </Location> <Location /sgd > Order Allow,Deny Allow from env=sgd_noauth_ok AuthType Basic AuthName "RADIUS Authentication for SGD" AuthBasicAuthoritative off AuthRadiusAuthoritative on AuthRadiusCookieValid 120 AuthRadiusActive On AuthUserFile /dev/null Require valid-user Satisfy any </Location>
A sample httpd-radius.conf file is included with this wiki page.
Use a Test Page to Check RADIUS Authentication
Using a test page enables you to check that the mod_auth_radius Apache module is installed and configured correctly to work with the RADIUS server. Do this before attempting to integrate the module with SGD.
- Create a new folder in the /htdocs folder of the SGD web server.
# mkdir /opt/tarantella/webserver/apache/{version}/htdocs/radius/
- Create the test page.
Create the following HTML file, opt/tarantella/webserver/apache/{version}/htdocs/radius/index.html:<HTML> <HEAD> <TITLE> Test Page for RADIUS authentication </TITLE> </HEAD> <BODY> <P> RADIUS authentication is successful.</P> </BODY> </HTML>
A sample test page file is included with this wiki page.
- Restart the SGD web server.
# tarantella restart webserver
- View the test page.
Restart your browser and go to sgdserver/radius, where sgdserver is the name of the SGD server.
The RADIUS authentication dialog is shown.
Enter your RADIUS credentials and click OK.
Following successful authentication against the RADIUS server, the test page you created is shown. This indicates that the mod_auth_radius Apache module is working correctly with the RADIUS server.
Enable Third-Party Authentication for SGD
To use RADIUS authentication for SGD logins, you must configure SGD to use third-party authentication. This involves the following steps:
- Configure Tomcat to Trust RADIUS Authentication
- Enable Third-Party Authentication for SGD
- (Optional) Allow Administrators to Log In Using Third-Party Authentication
- Log In to SGD Using RADIUS Authentication
Configure Tomcat to Trust RADIUS Authentication
- Edit the server.xml file.
On each array member, edit the /opt/tarantella/webserver/tomcat/{version}/conf/server.xml file. Add a tomcatAuthentication="false" attribute to the <Connector> element in this file.
For SGD version 4.41:<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 --> <Connector port="8009" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="0" useURIValidationHack="false" tomcatAuthentication="false" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
For SGD version 4.50:<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false" />
- Restart the SGD web server.
# tarantella restart webserver
Enable Third-Party Authentication for SGD
- In the SGD Administration Console, display the Secure Global Desktop Authentication Configuration Wizard. Go to the Global Settings -> Secure Global Desktop Authentication tab and click the Change Secure Global Desktop Authentication button.
- On the Third-Party/System Authentication step, select the Third-Party Authentication check box.
- On the Third-Party Authentication - User Identity and Profile step, select the check box for one or more search methods for finding the user identity.
- On the Review Selections step, check the authentication configuration and click Finish.
See the following links for for more details about configuring SGD to use third-party authentication:
(Optional) Allow Administrators to Log In Using Third-Party Authentication
By default, for security reasons, SGD Administrators are not allowed to log in using third-party authentication. The SGD login page is always shown for these users, even if they have been authenticated by the SGD web server. To allow SGD Administrators to log in using third-party authentication, run the following command:
# tarantella config edit --tarantella-config-login-thirdparty-allowadmins 1
This means that SGD Administrators are not prompted for a second username and password combination when they log in to SGD.
Log In to SGD Using RADIUS Authentication
Check that SGD users can log in using RADIUS authentication, as follows:
- Restart your browser.
- Log in to SGD.
Go to sgdserver/sgd, where sgdserver is the name of the SGD server.
The RADIUS authentication dialog is shown.
Enter your RADIUS credentials and click OK.
If authentication against the RADIUS server is successful, you are logged in to SGD and the SGD webtop is displayed. The SGD login page is not shown.
(Optional) Using One-Time Passwords
If you are using a one-time password (OTP) or a two-factor authentication mechanism such as SecurID, modify the httpd.conf file for the SGD web server as shown in the code sample in this section.
The following changes are required for OTP:
- Do not set a password retries value. With OTP, passwords cannot be resubmitted on failure.
- Specify the AuthBasicProvider directive, to prevent cached passwords from being resubmitted.
## RADIUS configuration for SGD using OTP # If we're using mod_auth_radius, then add it's specific # configuration options. <IfModule radius_auth_module> # # AddRadiusAuth server[:port] <shared-secret> [ timeout [ : retries ]] # # Use RADIUS server on radiusserver, RADIUS port is 1812, secret is 'testing123', # time out after 5 seconds, and do not retry passwords on failure. AddRadiusAuth radiusserver:1812 testing123 5 # # AuthRadiusBindAddress <hostname/ip-address> # # Bind client (local) socket to this local IP address. # The server will then see RADIUS client requests will come from # the given IP address. # By default, the module does not bind to any particular address, # and the operating system chooses the address to use. # # # AddRadiusCookieValid <minutes-for-which-cookie-is-valid> # The special value of 0 (zero) means the cookie is valid forever. # AddRadiusCookieValid 120 </IfModule> # Third party authentication # Use RADIUS authentication for the locations below SetEnvIf Request_URI "\.(class|cab|jar|gif|der)$" sgd_noauth_ok <Location /radius > Order Allow,Deny AuthType Basic AuthName "RADIUS Test Page" AuthBasicAuthoritative off AuthRadiusAuthoritative on AuthBasicProvider radius AuthRadiusCookieValid 120 AuthRadiusActive On AuthUserFile /dev/null Require valid-user Satisfy any </Location> <Location /sgd > Order Allow,Deny Allow from env=sgd_noauth_ok AuthType Basic AuthName "RADIUS Authentication for SGD" AuthBasicAuthoritative off AuthRadiusAuthoritative on AuthBasicProvider radius AuthRadiusCookieValid 120 AuthRadiusActive On AuthUserFile /dev/null Require valid-user Satisfy any </Location>
A sample httpd-radius.conf file for OTP is included with this wiki page.
New PIN Mode
New PIN mode is when users are required to change their PIN (personal identification number). For Internet Explorer browser users, the user experience when changing their PIN might be poor.
This is because Internet Explorer only allows the user three login attempts before failing the connection and reporting an error. Entering a new PIN typically requires four transactions. However, the PIN change is usually completed successfully.
Internet Explorer users should restart their browser after changing their PIN.
Another issue is that the browser (both Internet Explorer and Firefox) displays a generic login box used for webserver authentication without any indication that a new PIN must be entered. All in all, mod_auth_radius is not a particularly good solution if OTP support is required.