The calls:
( $status, $auth_id, $auth_age, $ident_type, $ident_method ) =
&get_local_auth ( $lifetime, $token_loc );
&get_remote_auth ($return_url, $ident_type, $token_loc,
$formcall_method, $return_method );
get_local_auth is called with the arguments:
$lifetime - the allowed lifetime in seconds of the
authentication
$token_loc - where the token for authentication can
be kept (any combination of cookie,
embedded in the url with @@, path_info,
or query_string as represented by "c",
"e", "p", "q"
get_local_auth returns:
$status - a result status on the call's actions.
This is presented in the form of:
Numeric code:Error string
(See Status Codes)
$auth_id - if authentication was successful, a
SUNet ID or Univ ID (as indicated by
$ident_type) will be returned
$auth_age - the time (in seconds (?)) since the
authentication action occurred
$ident_type - the form of identification that was
returned
(See Identification Types)
$ident_method - the manner in which authentication was
established
(See Authentication Methods)
get_remote_auth is called with the arguments:
$return_url - the URL that the authentication service
should redirect the client browser to
after authentication is completed
$ident_type - the form of identification that is
desired - uses the Identification Types
with the addition of the key "any"
(See Identification Types)
$token_loc - where the token for authentication should
be put (any combination of cookie,
embedded in the url with @@, path_info,
or query_string as represented by "c",
"e", "p", "q"
$formcall_method - whether the authentication service
should be called by a redirect or to
prompt the user with a form button
indicating authentication is required
$return_method - whether the authentication service
simply redirects back to the $return_url
or verifies authentication to the user
with a hyperlink pointing back to
$return_url
get_remote_auth is an exit call. It closes the
calling program and redirects the connecting client to the proxy
authentication server.
Status Codes
get_local_auth returns a status code in the
form of a numeric code that is colon-separated from an error string.
Current established codes are:
- 200 : Success
- 301 : No return URL provided
- 400 : No Auth Found
- 500 : Auth Unsuccessful
- 600 : Auth Expired
- 701 : DES operation failed
- 702 : Open of srvtab failed
- The 300 codes indicate a failure from the calling services.
For example, the 301 code indicates that the calling service failed to
provide a return URL for the web authentication service to redirect back
to after authentication is completed.
- The 400 code indicates that no tokens were found and that no
callback mechanisms responded for the client.
- The 500 code indicates that a token was found that either
didn't match the results of a responder on the client or that was
unusable.
- The 600 code indicates that the token found was outside the
time boundaries of the requested
$lifetime and, if a
callback was successful, it too was outside the boundaries of
$lifetime.
- The 700 codes deal with internal configuration or setup
errors.
- The Webauth Token
- The webauth token consists of six colon-separated items.
These items are:
- User (principal) or UnivID
- Indicates the authenticated principal name or
confirmed UnivID.
- create_time
- Indicates the time at which the principal was
authenticated. (This can vary dependent upon
whether the authentication method was via
responder or proxy.)
- Identification Type
- Indicates what type of User is being provided.
- client_IP
- Indicates the IP address of the actual
authenticating client (used in particular with
proxy authentication).
- Authentication Method
- Indicates which authentication method (responder,
proxy, etc.) was used to establish the User.
- Data
- To be determined. Placeholder field for
possible use with session state requirement.
- The webauth token is DES-encrypted in the web service key
and then converted to base64. It is then prefixed with either a
local: or a remote: tag to indicate that the
web service (local:) itself created the webauth token or
the proxy authentication service (remote:) did the creation.
- Identification Types
- The
web_auth package can establish
identification for the following recognized types:
- UnivID
- a numeric University ID
- SUNet ID
- the "person" (aka principal) SUNet ID type
- Authentication Methods
- The
web_auth package establishes authentication
by the following recognized methods:
- Leland Agent
- Using the current version of MacLeland
- S/Ident
- Using the versions of Mac/PC/Unix responders that
utilize the S/Ident protocol
- Proxy
- Using the redirect method to the proxy
authentication server that prompts the client
for a username/password pairing
- Client
- Using tools such that the client actually
establishes its own authentication token to pass
for
get_local_auth
-
- Integration of the WebAuth process into an Apache server
module is expected as well (in particular, this work will be done for
the WWW-Leland Web services) but the deliverable is anticipated after
the delivery of the general base WebAuth module.
- Integration will produce the following service extensions:
- File Access Control
- This allows users to base authentication simply upon the
existing .htaccess control method by simply adding a new AuthType.
- The server is modified to recognize the AuthType
StanfordAuth which allows for htgroup files and require
statements in the access control file for a directory to
contain the authenticated user's identity rather than
having to maintain a separate and unique passwd file.
require valid-user would then indicate an
authenticated client browser session.
- Environment Variables
- For CGI programmers using a modified server, the authentication
process built into the server will set several environment variables.
The standard variable that gets set is the standard
REMOTE_USER, with several WebAuth specfic
SU_AUTH_* type variables also being established:
SU_AUTH_AGE
- how old the current credential is
SU_AUTH_USER
- same as
REMOTE_USER but specific to
the webauth setup
SU_AUTH_METHOD
- by what method the user was authenticated
SU_AUTH_TOKEN
- If authentication has been previously established
and the client browser is passing the webauth
token in a cookie,
SU_AUTH_TOKEN
is set with the encrypted webauth token.
- Note: Indeed
REMOTE_USER
should not be assumed for the API, but rather assume
SU_AUTH_USER so that there can't be any mistake about what
kind of authentication the user established, as REMOTE_USER
may be set through a variety of methods.
-
- The use of personal digital certificates for authentication is
anticipated in the future and will require modifications to the
infrastructure and service delivery for integrated functionality.
Actual specifications are currently still too unclear to provide a full
impact analysis.