NAME

Authen::ACE4 - Perl extension for accessing a SecurID ACE server or RSA Authenticaiotn Manager

SYNOPSIS

use Authen::ACE4; AceInitialize(); ($result, $handle, $moreData, $echoFlag, $respTimeout, $nextRespLen, $prompt) = AceStartAuth($username); ($result, $moreData, $echoFlag, $respTimeout, $nextRespLen, $prompt) = Authen::ACE4::AceContinueAuth($handle, $resp); ($result, $status) = Authen::ACE4::AceGetAuthenticationStatus($handle); $result = AceCloseAuth($handle);

DESCRIPTION

Authen::ACE4 provides a client interface to a Security Dynamics SecurID ACE server. It uses the ACE/Agent client libraries. SecurID authentication can be added to any Perl application using Authen::ACE4.

Synchronous functions are provided for authenticating users and getting some user information. Asynchronous functions are not supported. ACE/Agent Version 4.1 and better API is supported. Legacy functions like sd_auth etc are not supported.

METHODS

AceInitialize

AceInitialize();

Initializes the ACE client access library and loads the ACE configuration file (sdconf.rec). AceInitialize must be called before any other API function is called.

On Unix, the environment variable VAR_ACE is used to find the ACE/Server sdconf.rec file, which specifies how to contact the ACE server and/or Authentication Manager. The default is /var/ace/data. If your sdconf.rec is in a different location you must specify VAR_ACE eg:

$ENV{VAR_ACE} = '/opt/ace/data';

before calling AceInitialize.

AceStartAuth

($result, $handle, $moreData, $echoFlag, $respTimeout, $nextRespLen, $prompt) = Authen::ACE4::AceStartAuth($username);

The AceStartAuth function is designed to be used aling with AceContinueAuth and AceCloseAuth.

AceStartAuth is the first step in authenticating a user. If the function returns successfully, continue to call AceContinueAuth as long as $moreData is true.

If AceStartAuth returns successfully, AceCloseAuth must be called to close the authentication context. If AceStartAuth does not return successfully, AceCloseAuth must not be called.

You can have multiple authentication contexts (handles) current at the same time. Each one must be closed with its own AceCloseAuth.

Input data is

username

The name of the user to be authenticated, as known to the ACE/Server.

Returned data is

result

Indicates the success or failure of the call (but not success of the authentication, see AceGetAuthenticationStatus for that).

If the call succeeds, $handle, $moreData etc will be set. If the call fails, only $result and $prompt will have meaningful values.

Possible results for $result are

ACM_OK

The call succeeded. $handle contains the handle for this context

ACE_INIT_NO_RESOURCE

Memory allocation error

ACE_EVENT_CREATE_FAIL

Could not create event object and associated data.

ACE_INIT_SOCKET_FAIL

Could not open and/or create a socket

handle

Returns a new opaque handle for this authentication context.

moreData

A flag that indicate whether more data is needed by the authentication context.

echoFlag

A flag that gives a hint to the developer whether the next response should be echoed on the screen.

respTimeout

A hint to the developer about how long to display this prompt string to the user.

nextRespLen

Indicates the maximum number of bytes of data expected in the next call to AceContinueAuth

prompt

Message string that should be shown to the user as the request for data to be passed to the next call to AceContinueAuth.

AceContinueAuth

($result, $moreData, $echoFlag, $respTimeout, $nextRespLen, $prompt) = Authen::ACE4::AceContinueAuth($handle, $resp);

AceContinueAuth should continue to be called for as long as it succeeds and $moreData is true. Each successive call will ask for additional data required for the authentication to be entered by the user.

After AceContinueAuth returns with moreDat false, use AceGetAuthenticationStatus to check the result of the completed authentication process.

Input data is

handle

The opaque handle for this authentication context, previously returned by AceStartAuth.

resp

The response from the user to the prompt from the previous AceStartAuth or AceContinueAuth.

Returned data is

result

Indicates the success or failure of the call (but not success of the authentication, see AceGetAuthenticationStatus for that).

If the call succeeds, $moreData, $echoFlag etc will be set. If the call fails, only $result and $prompt will have meaningful values.

Possible results for $result are

ACM_OK

The call succeeded. $handle contains the handle for this context

ACE_CHECK_INVALID_HANDLE

Handle is invalid

moreData

A flag that indicate whether more data is needed by the authentication context.

echoFlag

A flag that gives a hint to the developer whether the next response should be echoed on the screen.

respTimeout

A hint to the developer about how long to display this prompt string to the user.

nextRespLen

Indicates the maximum number of bytes of data expected in the next call to AceContinueAuth

prompt

Message string that should be shown to the user as the request for data to be passed to the next call to AceContinueAuth.

AceGetAuthenticationStatus

($result, $status) = Authen::ACE4::AceGetAuthenticationStatus($handle);

Returns the status of the request. Can be called at any stage during the authentication process.

Returned data is

result

Indicates the success or failure of the call (but not success of the authentication, see $status for that).

Possible results for $result are

ACE_SUCCESS

The call succeeded. $status contains the status for this context. Note that it is not correct to compare this with ACM_OK.

ACE_CHECK_INVALID_HANDLE

Handle is invalid

status

Indicates the current status of this authentication

Possible results for $status are

ACM_NEXT_CODE_REQUIRE
ACM_ACCESS_DENIED
ACM_NEW_PIN_REQUIRED
ACM_NEW_PIN_ACCEPTED
ACM_NEW_PIN_REJECTED
ACM_NEXT_CODE_BAD
AceCloseAuth

$result = Authen::ACE4::AceCloseAuth($handle);

Closes a previously created authentication context, and frees any memory that was allocated. Every successful AceStartAuth must have a matching AceCloseAuth. It can be called at any time after AceStartAuth. $handle must be the handle returned by a previous call to AceStartAuth.

Returns ACM_OK if successful.

AUTHOR

Mike McCauley <mikem@open.com.au>

Copyright (C) 2000 OPen System Consultants Pty Ltd. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

perl(1), ACE/Server Administration Manual, ACE/Server v 4.1 Authentication API Guide, Authen::ACE