Intview 1 PDF
Intview 1 PDF
Keys Botzum
Senior Technical Staff Member
IBM
Bill O'Donnell
Lead WebSphere Security Architect
IBM
03 Mar 2010
Important FAQs
A subject area as critical as application server security prompts a noteworthy volume
of equally critical questions. To help you better understand IBM® WebSphere®
Application Server security in general, and how it is (or should be) applied in your
environment, here are some of the most frequently asked questions, as they apply to
WebSphere Application Server V6.1 and later (unless otherwise noted).
The questions and answers listed here are presented in three broad categories:
Registry
1. When does WebSphere Application Server contact the registry for user
information?
6. My users authenticate with one userid but I want them to be identified with
another ID from LDAP. Is that possible?
Authentication
10. Is there anything I can do to prevent my LTPA keys from becoming out of
sync between my cells?
11. Can a WebSphere Application Server cell span multiple DNS domains?
13. When should I use a custom login module versus a TAI to assert identity
information?
17. WebSphere Application Server stores passwords XOR encoded. I'd like to
use something stronger. What can I do?
Registry
1. When does WebSphere Application Server contact the registry for user
information?
WebSphere Application Server queries the registry for user information as well as for
administrative operations. Thus, the registry must be nearly 100% available for a
WebSphere Application Server cell to function.
Here are the reasons why WebSphere Application Server will contact the registry:
WebSphere Application Server does not directly support NIS (Network Information
Service) for authentication. It supports LDAP, OS, and custom. When running on a
UNIX operating system, WebSphere Application Server uses the standard UNIX
password APIs (getpw*, and so on) for verifying user password (WebSphere
Application Server must run as root for this to work). If those APIs call to NIS, then
WebSphere Application Server will use NIS for authentication, but this is transparent
to WebSphere Application Server. However, when an OS registry is used on UNIX,
then multi-node cells are not supported.
To use the Local OS user registry, the user under which the product processes run
must have Administrative and Act as part of the operating system privileges to
call the Windows operating system APIs that authenticate or collect user and group
information. The process needs special authority, which is given by these privileges.
The user in this example should not be the same as the security server ID (the
requirement for which is a valid user in the registry). This user logs into the machine
(if using the command line to start the product process) or the Log On User setting in
the services panel (if the product processes have started using the services). If the
machine is also part of a domain, this user should be part of the Domain Admin
group in the domain to call the operating system APIs in the domain, in addition to
having the Act as part of operating system privilege in the local machine.
To use the Local OS user registry, the user under which the product processes run
must have the root privilege. This privilege is needed to call the UNIX operating
system APIs to authenticate or to collect user and group information. The process
needs special authority, which is given by the root privilege. Using the Local OS user
registry requires the node agent, the deployment manager, and the application
server process to run as root.
More information can be found in the Information Center article: Local operating
system registries.
6. My users authenticate with one userid but I want them to be identified with
another ID from LDAP. Is that possible?
As an example, assume that a user's LDAP entry has the following attribute/value
pairs: uid=dale.sue.ping, myname=sueping.
With the above WebSphere Application Server LDAP configuration change, the user
would logon with a userid of dale.sue.ping, authenticate with WebSphere
Application Server/LDAP and, on a successful authentication, WebSphere
Application Server will set the J2EE principal to sueping.
If the application has the capability to extract the J2EE principal, the application will
see the user as "sueping" and not as "dale.sue.ping."
Yes, there is a configuration option that enables the authentication to continue if one
or more other registries are down, as long as the ID is found in one of the registries
that are still up and functional. The federated repository configuration command to
permit this is:
Authentication
8. Why do I need to enable SSO when using form-based login in my
WebSphere Application Server application?
9. I want to force my users to login again after a set "inactivity timeout" period.
How is WebSphere Application Server supposed to work with regard to
session timeouts and LTPA timeouts?
The WebSphere Application Server LTPA token expires based on the lifetime of the
login session, not based upon inactivity. Thus, the WebSphere Application Server
login session will not expire if the user performs no action for some period of time.
However, the HTTPSession does expire based upon inactivity. If in your application
you need to expire the use of an application based on idleness, you must explicitly
code this in your application. You can capture when a user arrives with an expired
session (really, a new session) and force them to login again if you think this is
necessary. Keep in mind that doing this undermines Single Sign On across
applications.
Either of these approaches can be made transparent to the application code through
the use of servlet filters.
It should be noted that IBM Tivoli® Access Manager provides for lifetime- and
idle-based authentication session timeouts.
Users often ask why WebSphere Application Server works this way. Why can't it
timeout idle login sessions? The reason is because WebSphere Application Server
is fundamentally a loosely coupled distributed system. Application servers that
participate in an SSO domain don't need to talk to each other. They don't even have
to be in the same cell. So, if you want to limit the idleness lifetime of an LTPA token
(aka SSO token), you'd have to update the token itself with a last usage time on
every request (or perhaps on the first request seen during a one minute interval).
This means that the token itself would change frequently (meaning the browser
would be accepting new cookies frequently) and that WebSphere Application Server
would have to decrypt and verify the inbound token when it is seen to validate it.
That could be expensive (WebSphere Application Server today only validates a
token on the first use at each application server). It's not impossible to solve these
problems with clever caching and such, but that's not how WebSphere Application
Server works today.
10. Is there anything I can do to prevent my LTPA keys from becoming out of
sync between my cells?
11. Can a WebSphere Application Server cell span multiple DNS domains?
Prior to WebSphere Application Server V6, the answer was no. This is because
when you configured WebSphere Application Server security, one of the items you
needed to specify was the LTPA token SSO domain. If you left it blank, the LTPA
token/cookie domain was set to blank, which meant that the cookie went back to the
same host only. If you provided a value, the cookie domain was set to that and then
the cookie would go back to hosts within the same DNS domain. This is the behavior
required by the HTTP specification. The problem was that if your cell (or really the
Web servers) served requests for multiple DNS domains, there was no way to
specify more than one domain. As of WebSphere Application Server V6, the SSO
domain value specified to WebSphere Application Server can contain multiple DNS
domains. Now, you specify all of the domains you need. When WebSphere
Application Server creates the cookie, it will set the domain value for the cookie (the
HTTP spec allows for only one value) to the value from the inbound request that
matches one of the configured domains.
Examples of a valid domain name are ibm.com and tx.gov. Examples of invalid
domain names are ibmus and state_tx.gov. Some users have experienced a
problem with Internet Explorer (IE), in that IE 5 and IE 6 do not seem to accept the
LTPA token when the domain defined in the SSO domain field is less than five
characters, excluding the period, such as "cn.ca". Microsoft has a fix for this.
13. When should I use a custom login module versus a TAI to assert identity
information?
Note: If a user has already been authenticated by some authentication system other
than WebSphere Application Server, it is possible to inform WebSphere Application
Server of the user's identity information rather than requiring that the user
re-authenticate. This is known as identity assertion. For more information about
identity assertion as it relates to TAI, see Advanced authentication in WebSphere
Application Server.
d. Recycle each server in the cluster in turn, so that you always have a node
running.
e. Set the new password for useridA. If you missed something in step 3, it
will break but it will not affect the other correctly changed occurrences.
f. The next time you change passwords, switch from useridB back to
useridA.
As both userid/password combinations are valid during the transition, you don't have
to worry about synchronization.
For example, Siteminder develops and sells a TAI for WebSphere Application
Server. CA is responsible for support of Siteminder and the TAI they design and
develop for the integration of Siteminder with WebSphere Application Server. From a
WebSphere Application Server perspective, you can use any of these products you
wish, but any questions or problems you experience must be handled through the
vendor, such as CA for Siteminder. As they do with IBM, users pay CA for the
license to use and receive support for Siteminder. IBM does not have the means or
the responsibility to fix Siteminder, the Siteminder TAI, or any Siteminder
accessories.
17. WebSphere Application Server stores passwords XOR encoded. I'd like to
use something stronger. What can I do?
Prior to WebSphere Application Server V6.0.2, there was little you could do in
general. If you didn't like how WebSphere Application Server stored passwords for
the J2C resources, you could write you own custom J2C login module to get
passwords from a source outside of WebSphere Application Server, but this wouldn't
help with other passwords used by WebSphere Application Server: LDAP bind,
WebSphere Application Server admin, and so on.
With WebSphere Application Server V6.0.2, you can actually configure your own
custom password encoder that can implement whatever protection you deem
appropriate. To do this you implement the plugin interface
(com.ibm.wsspi.security.crypto.CustomPasswordEncryption) and then specify two
custom security properties in security.xml. You can also set these in
PropFilePasswordEncoder.bat/sh. The two properties are:
• com.ibm.wsspi.security.crypto.customPasswordEncryptionClass
• com.ibm.wsspi.security.crypto.customPasswordEncryptionEnabled.
For more information, see the Information Center article: Plug point for custom
password encryption.
There are two primary aids, the WebSphere SystemOut.log file and the
Yes, we recently added some helpful tips based on experience our IBM Software
Services for WebSphere team has had with other customers. Please refer to our
Using Microsoft Active Directory with IBM WebSphere Application Server white
paper.
Summary
If your most important security questions were not answered here, be sure to check
the Resources below, and particularly the new WebSphere Application Server
security resources page on developerWorks, where much of the most noteworthy
material on WebSphere Application Server security will be continually spotlighted.
Resources
• WebSphere Application Server security resources
• Advanced authentication in WebSphere Application Server
• Using Microsoft Active Directory with IBM WebSphere Application Server
• Information Center
• All WebSphere Application Server Information Centers
• Local operating system registries
• IdMgrRealmConfig command group for the AdminTask object
• Plug point for custom password encryption
• Internet Explorer does not set a cookie for two-letter domains
Bill O'Donnell
Bill O'Donnell is the Lead WebSphere Security Architect working in the WebSphere
product development organization. He is responsible for the security architecture for
WebSphere Application Server. Bill has has over 25 years experience in large scale