User Guide

Table Of Contents
386 Chapter 16: Securing Applications
Logging a user out by using the cflogout tag does not close the user’s session, but if you use
session login storage, it does remove the login information (the Session.cfauthorization variable)
from the Session scope. For more information on ending sessions, see “Ending a session
on page 356.
Caution: If you use web server–based authentication or any form authentication that uses a Basic
HTTP Authorization header, the browser continues to send the authentication information to your
application until the user closes the browser, or in some cases, all open browser windows. As a result,
after the user logs out and your application uses the
cflogout tag, until the browser closes, the cflogin
structure in the
cflogin tag will contain the logged-out user’s UserID and password. If a user logs out
and does not close the browser, another user might access pages with the first user’s login.
Security scenarios
The following sections provide two detailed security scenarios. The first scenario uses the web
server to perform the authentication against its user and password database. The second scenario
uses ColdFusion for all authentication and authorization.
A web server authentication security scenario
An application that uses web server authentication might work as follows. The example in “Web
server–based authentication user security example” on page 391 implements this scenario.
1.
When the user requests a page from a particular directory on the server for the first time after
starting the browser, the web server displays a login page and logs in the user. The web server
handles all user authentication.
2.
Because the user requested a ColdFusion page, the web server hands the request to ColdFusion.
3.
When ColdFusion receives a request for a ColdFusion page, it instantiates the Application.cfc
and runs
onRequestStart method. If you use an Application.cfm page in place of the
Application.cfc, it runs the contents of the Application.cfm page before it runs the requested
page. The
onRequestStart method or Application.cfm page contains a cflogin tag.
ColdFusion executes the
cflogin tag body if the user is not logged into ColdFusion. The user
is logged in if the
cfloginuser tag has run successfully for this application and the user has not
been logged out.
4.
Code in the cflogin tag body uses the user ID and password from the browser login, contained
in the cflogin.name and cflogin.password variables, as follows. (With Digest or NTLM web
server authentication, the cflogin.password variable is the empty string.)
a
It checks the users name against information it maintains about users and roles. In a simple
case, the application might have two roles, one for users and one for administrators. The
CFML assigns the Admin role to any user logged on with the user ID Admin and assigns the
User role to all other users.
b
It calls the cfloginuser tag with the users ID, password, and roles, to identify the user to
ColdFusion.
5.
Application.cfc or the Application.cfm page completes processing, and ColdFusion processes
the requested application page.