Previous Topic: About Password SecurityNext Topic: Internationalization & Localization (APSXLate)


SmPortal/SmTransact Installation and Configuration

This section contains the following topics:

Introduction

Installation

Operation

Configuration

Verification

Introduction

A typical installation of SiteMinder places the Web Servers in the DMZ and the SiteMinder Policy Server inside the firewalls. They communicate with each other using secure, encrypted communications through any intervening firewalls.

Several services supplied by CA Professional Services should be run behind the firewall, such as Advanced Password Services (APS) and Distributed Directory Administration (DDA). These services require access to the underlying user directory, usually LDAP, which should not be exposed within the DMZ for security reasons.

The architecture to accomplish this securely, easily, and with minimal configuration, is implemented by the SmPortal/SmTransact tunnel.

The SiteMinder Agent API toolkit includes a service-processing tunnel called SmTransact. SmTransact allows an arbitrary block of data (limited to 32k in size) to be passed through the firewall to the Policy Server. The Policy Server then passes the data to a library called SmTransact. SmTransact can then pass back up to 32k of response data.

The problem with this system is that it can only process a single service. It is up to the caller(s) to identify the processing that is to occur on the back-end and to write an SmTransact library that can dispatch the service request to the correct application code.

The SmPortal/SmTransact libraries solve this problem. This is a layer, consisting of the SmPortal library on the client and SmTransact on the Policy Server, which allows multiple services to run through the Agent API tunnel. It also provides the following additional capabilities:

These features are primarily of concern to developers.

About Firewalls

This kit uses the same libraries that SiteMinder uses to communicate between its agents and the Policy Servers. The same ports are used for this communication and the same encryption methods are used.

If a SiteMinder Web Agent can communicate through the firewall, since SmPortal should be using the same port and such, no additional configuration should be required on the firewall.

Installation

This section describes how to install SmPortal and SmTransact.

SmPortal - The Client Side

The SmPortal module consist of these files:

Additional files may be installed to support the SmPortal module. These files include:

All files will be installed using the supplied installation program.

SmTransact - The Policy Server Side

On the SiteMinder Policy Server side, these files must be installed:

Note: If APSPing, SmPortalTest and SmPortalVfy are not be used, the APSTransponder and PortalTest libraries are not needed. However, we highly recommend that they be installed anyway.

If the SiteMinder Policy Server is running, you may need to stop it before you can perform the installation.

There is a version of the SmTransact library that is supplied with SiteMinder itself. That version works well with most known SmPortal/SmTransact services, but definitely will not support SmPortalTest and SmPortalVfy as supplied. You should install the later version of SmTransact, if possible. There are no known problems with doing this.

You can install SmTransact on your Policy Server using the supplied installation scripts.

Operation

Client applications, often running on a Web Server, make calls to the SmPortal library. SmPortal determines the location of the service provider and how to get there (using SmPortal.cfg). The call is made to SiteMinder communications code and data is passed to the SiteMinder Policy Server.

The SiteMinder Policy Server gets the request from the client and calls code within SmTransact. SmTransact determines the service being requested and loads the proper library (making initialization calls at that time).

SmTransact then calls the proper service code within the service library and returns the data to the caller. SmPortal and SmTransact perform some behind-the-scenes communication to handle large buffers (>32k).

Configuration

All configuration information for SmPortal is stored in the SmPortal.cfg file. SmPortal looks for this file using several techniques, in this order:

  1. (Windows ONLY) SmPortal looks on the same directory that the SmPortal.dll file was loaded from. This file will be used, if it exists.
  2. The current working directory will be checked for a file called SmPortal.cfg. If it exists (and is readable), it will be used.
  3. (Unix ONLY) An environment variable called SMPORTAL will be checked. If it exists and contains the name of a readable file, the file pointed to will be used.

    If the file is still not found, an error will occur (it will not use default values).

    The SmPortal.cfg file supplied with the kit is not configured to work immediately after installation. It must be modified before communications will work correctly. It must also be modified as each new service is installed.

The following shows the file as it is installed (more or less):

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Servers
;;
;; Each server should have an ip
;; address, specified as:
;;   <server>.ip=aaa.bbb.ccc.ddd
;;
;; It *may* also have a port as:
;;   <server>.port=44442
;;
;; It *may* also have a timeout as:
;;   <server>.timeout=30000
;;
;; It *may* also have a minimum number
;; of connections as:
;;   <server>.ConnMin=1
;;
;; It *may* also have a maximum number
;; of connections as:
;;   <server>.ConnMax=5
;;
;; It *may* also have a connection
;; step value as:
;;   <server>.ConnStep=1
;;
;; The entry "Servers" should contain
;; a comma-delimited list of all
;; server names.
;;
;; Entry names are not case-sensitive.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Servers=MyServer

MyServer.ip=127.0.0.1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Agents
;;
;; Each agent should have  list of
;; servers, specified as:
;;   <agent>.servers=<s1>,<s2>...
;;
;; It must also have a shared secret as:
;;   <agent>.secret=xyzzy
;; shared secrets may be encrypted using
;; the APSEncrypt utility (see documentation)
;;
;; It *may* also specify round robining
;; (instead of fail over) as:
;;   <server>.RoundRobin
;;
;; The entry "Agents" should contain
;; a comma-delimited list of all
;; Agent names.
;;
;; Entry names ARE case-sensitive.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Agents=ghost

ghost.Servers=MyServer
ghost.Secret=[NDSEnc-A]6UUYOUf4E6O42CEuYo8H(E4UdyZ

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Services
;;
;; Each service should point to a
;; single agent, specified as:
;;   <service>.agent=
;;
;; It *may* also specif<agent>y tracing as:
;;   <service>.Trace
;;
;; It *may* also specify debugging as:
;;   <service>.Debug
;;
;; The entry "Services" should contain
;; a comma-delimited list of all
;; Service names.
;;
;; Entry names are not case-sensitive.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Services=PortalTest,SmPassword

PortalTest.Agent=ghost
SmAPS.Agent=ghost

The file is well documented, so that changes can be made with minimal (if any) referral to external documentation.

Any text following a semicolon (;) is considered a comment. Blank lines are ignored.

The file consists of three sections.

The Server Section

The Server Section defines the SiteMinder Policy Servers that are available from this computer.

The Servers= entry contains a comma-delimited list of all of the servers defined for this machine.

Server names are arbitrary. CA Professional Services recommends that the server names match the network name of the Policy Server machine. The name is only used to cross reference values within the configuration file. The name may contain embedded periods and is not case-sensitive.

Any number of servers may be defined in this section, but each server must have at least one entry following the Servers entry:

<servername>.ip=<IP-address>

This entry defines the IP address used to get to the specified Policy Server. The IP address specified here must be the one used to access the Policy Server from the server running the SmPortal code. Thus, if address translation is in effect at the firewall, the address may not match the actual address of the Policy Server.

The easiest way to determine this address at most sites is to open the SiteMinder Web Agent Management Console on the system and examine the address of the Primary SiteMinder Policy Server. If the Web Agent communicates properly with the SiteMinder Policy Server, then this is the correct address.

The <servername> portion of the setting name must match the name listed in the Servers setting.

Optional Server Settings
<server>.port=CA Portal

This setting may be used to change the port used to communicate with the Policy Server. The default is port 44442. It must match the port used by the Authentication Service on the SiteMinder Policy Server.

<server>.timeout=<timeout in milliseconds>

This allows the administrator to override the timeout for the specified server. The default is 30000 (30 seconds). This is a reasonable timeout and should not, in general, be changed.

<server>.ConnMin=<minimum connections>

This setting allows the specification of the minimum number of connections to the server that SmPortal should initialize. The default value of one should be used in almost all cases. This setting is intended for use by applications that require multiple connections to a Policy Server.

<server>.ConnMax=<maximum connections>

This setting allows the specification of the maximum number of connections to the server that SmPortal should initialize. The default value of one should be used in almost all cases. This setting is intended for use by applications that require multiple connections to a Policy Server.

<server>.ConnStep=<connection step value>

If the minimum and maximum connections are set, this value specifies the stepping value that SmPortal should use between the minimum and maximum values. For example, if the minimum value is one and the maximum value is 25, the stepping value might be five. This would cause SmPortal to increment the number of connections by five each time that it runs out of connections. The default value of one should be used in almost all cases. This setting is intended for use by applications that require multiple connections to a Policy Server.

The Agent Section

The Agent section tells SmPortal which agents exist and the servers that know about them.

The Agents= entry contains a comma-delimited list of all of the agents which may be used from this machine.

Agent names are not arbitrary. Each must match an Agent configured on a Siteminder Policy Server. The name is case-sensitive. Typically, the same agent names are used for both services and the resident Web Agent, but this is not required.

Any number of Agents may be listed immediately after the Agents line. Each Agent must be defined using the following two lines:

<agent>.Servers=<serverlist>
<agent>.Secret=<shared secret>

The first line defines the servers on which this agent is defined. The server list contains a comma-delimited list of servers that know about this Agent. Each server so referenced must be defined in the server section.

The order in which servers are defined is significant. By default, SmPortal will attempt to contact servers in the order listed here. Multiple servers are used for fault-tolerance; if a server cannot be contacted, the next server in the list is used. Any number of servers can be listed.

The Secret line defines the shared secret used between the Agent and the Policy Server. This must be the same secret configured on the Policy Server(s) for the Agent.

Secrets can be stored in either plain text or in encrypted format. If the secret is stored in plain text and this is a problem, define specific agents for services, thus hiding the shared secret used by the Web Agent. Since no policies need to be created in order to run the services through the tunnel (though they may be required to access the application through the Web Agent), security is maintained.

To store the secret in encrypted format, use the APSEncrypt utility to encrypt the shared secret, then copy the encrypted value (output from APSEncrypt) into the <agent>.Secret line in SmPortal.cfg.

Optional Agent Settings

By default, if multiple servers are specified for an agent, the servers will be used in failover mode (the first server used unless it is unavailable, in which case, SmPortal will use the second server, and so on).

To specify that the server list is to be used in round robin format, use the following setting:

<agent>.RoundRobin

SmPortal cannot do true round-robining because each application that uses SmPortal is a completely independent instance. Instead, SmPortal will simulate round-robining by randomly rotating the list of servers, then using the resulting list as though failover mode were specified. This technique provides the same results as true round-robining.

The Service Section

The Service section defines the services that can use SmPortal and what Agent configuration each should use.

The Services= entry contains a comma-delimited list of all services that may be used from this system.

Each application or API that uses a service has its service name encoded within it. See the documentation for the service itself to determine the name of the service. Note that the name may not correspond to the actual product name.

After the Services= entry, each service is identified by a single line that define the Agent to be used by that service.

<service>.Agent=<agent>

The value for the agent must correspond to an Agent name defined in the previous section.

The service name for SmPortalTest is PortalTest and should already be listed in SmPortal.cfg.

Some applications may support qualified service names. For example, SmPortalTest allows multiple definitions of the PortalTest service within the configuration file. Each entry must be qualified as in:

Qualifier1.PortalTest.Agent=ghost

AnotherInstance.PortalTest.Agent=ranger

Qualifiers allow the same service to run on multiple servers, yet still be addressable independently. In the PortalTest example, it allows the SmPortalTest application to select from several possible configurations (targets) for the PortalTest service.

If a service name is to be qualified, all optional settings should be qualified as well.

If a qualified service name is requested by an application, but no qualifiers match for that service, the unqualified settings for the same service will be used (if configured).

Not all applications support qualified services.

Optional Service Settings
<service>.Trace

This setting turns on trace logging for the service. The back-end service library will be notified that tracing is requested. The actual tracing performed is up to the service itself and will vary. All tracing is written to the SiteMinder console log.

Trace and debug logging may also be turned on within the code. If so, these settings will have no effect.

<service>.Debug

This setting turns on debug logging for the service. The back-end service library will be notified that debug tracing is requested. The actual logging performed is up to the service itself and will vary, though SmTransact performs some debug logging as well, if this setting is turned on.

Trace and debug logging may also be turned on within the code. If so, these settings will have no effect.

Verification

Two utilities may be supplied with the kit that can be used to verify a configuration.

SmPortalTest

The SmPortalTest (SmPortalTest.exe on Windows) can be used to verify that SmPortal can communicate properly with a SiteMinder Policy Server. SmPortalTest communicates through the tunnel to the PortalTest service, running on a Policy Server.

SmPortalTest takes each of its command line arguments and transmits them to PortalTest. PortalTest merely reverses the passed string and returns it.

A typical execution, on a properly configured site, might look like:

>SmPortalTest abc
Returned (4 bytes): "cba"

The string abc is passed and cba is returned. This indicates proper configuration.

A failure might be indicated thus:

>SmPortalTest abc
Returned Error Code = -18
Message: "Unable to establish server's IP address"

For suggested solutions to possible error codes, see Connectivity Problems.

The PortalTest library must be installed on each server that you wish to test a tunnel to. Note that the SmTransact library as supplied with SiteMinder does not include a version of PortalTest.

We recommend that each agent configuration be tested using SmPortalTest. This is done by configuring the PortalTest service for each agent (in SmPortal.cfg), in turn, then executing SmPortalTest to make sure that that agent's configuration is valid.

Additional Arguments

Most arguments passed to SmPortalTest will be sent to the PortalTest library as stated above. However, SmPortalTest recognizes some special command line arguments.

The available arguments will be displayed when -? appears on the command line.

Language Code

To specify a language other than English to use for error messages, use the ‑L option to specify the ISO code for the language, as in:

SmPortalTest -LFR
Country Code

To specify a country other than the US to use for error messages, use the ‑C option to specify the ISO code for the country, as in:

SmPortalTest -CCA
Isolating Transactions

Normally, SmPortalTest creates a single connection to the Policy Server and issues each service request to PortalTest on the same connection. This option tells SmPortalTest whether or not each service request (transaction) should be sent on the same connection or on a separate connection.

Isolation can be turned on or off and will affect all transactions appearing after the setting. For example,

SmPortalTest -I+ abc def -I- ghi jkl

will cause SmPortalTest to isolate the abc and def transactions. The ghi and jkl will be processed on the same connection.

Automated Testing

There are three arguments that are used for automated testing. The -X option specifies the number of iterations to be used (the default is infinite). The -S option specifies the number of seconds to wait between each transaction and the -T option specifies that automated testing is to be used and can specify the size of each transaction. When using Automated Testing, the isolation setting is honored.

For example,

SmPortalTest -T

will perform automated testing using the default transaction size of 512 bytes. The test will be continued until Control-C is pressed. SmPortalTest will not wait between transactions. Transactions will not be isolated (since this is the default).

SmPortalTest -I+ -X15 -S3 -T256

This command line will perform 15 (the -X option) isolated transactions (the -I+ option), 15 seconds apart (the -S option), using a 256 byte buffer.

There is a 1K limit to the automated testing buffer at this time.

Testing Specific Configurations

The -Q option can be used to qualify the service name used when referencing the SmPortal.cfg file. If -Q is used, it should be immediately followed by the desired qualifier.

SmPortalTest -Qghost abc -Qranger def

If -Q is used without a qualifier, no qualifier will be used.

SmPortalTest -Qghost abc -Qranger def -Q ghi

SmPortalVfy

SmPortalVfy is a new utility supplied with SmPortal version 5.0 that verifies the entire SmPortal.cfg file. It will only work properly if SmTransact version 5.0 (or later) is installed on the Policy Server.

SmPortalVfy is typically invoked with no command line arguments. It will test each setting in the default SmPortal.cfg file and report the results.

The verification process consists of two phases. First, the utility cross checks all of the configuration to ensure that the settings make sense within the file. If any problems are detected, they are reported and the verification process stops.

The second phase actually tests each setting within the file by attempting to communicate with the component. SmPortalVfy will attempt to communicate with each server, each agent's server (as the agent), and each service (as the agent for each of the agent's defined servers) defined within the file.

SmPortalVfy may not detect that a server is unavailable during its initial checking. This is normal and depends on a number of factors. If a server is unavailable, it will definitely be detected when the agents are checked against that server.

Any error during the communications phase will terminate processing.

SmPortalVfy supports one optional argument that specifies a path to SmPortal.cfg. This can be used to verify a new SmPortal.cfg file before putting it into production.

APSPing

APSPing is a new utility supplied with SmPortal version 5.0 that can test the connectivity to a single policy server, a service on that server, or an SmTunnel function housed by a service. It will only work properly if the (new) APSTransponder library is installed on the Policy Server.