The format and conventions are freely borrowed from The Open Group XDAS specifications.
-
-
typedef struct
azn_buffer_desc_struct {
size_t length;
void *value;
} azn_buffer_desc, *azn_buffer_t;
Storage for buffer azn_buffer_desc objects is always allocated and released by the application. Newly created azn_buffer_desc objects may be initialized to the value AZN_C_EMPTY_BUFFER.
azn_buffer_t
objects
appear as "out" parameters in the
-
-
typedef char *azn_string_t;
This is a string data type designed to implement string-encoded tokens to identify capabilities, permissions and similar authorization concepts in an implementation independent portable format.
A "\0"-terminated UTF-8 character array is used for the string representation.
-
-
azn_creds_h_t
A variable of type azn_creds_h_t is an opaque handle which refers to an implementation-specific credentials chain structure.
Before an application can use a
credential handle, it must initialize the handle by calling
When
an application no longer needs a credentials chain structure, the
application must release the credentials chain structure by calling
-
-
azn_attrlist_h_t
A variable of type azn_attrlist_h_t is an opaque handle which refers to a list of name-value pairs maintained by the aznAPI implementation. The aznAPI provides interfaces for retrieving name-value pairs from attribute lists referred to by attribute list handles.
Before an application can use an attribute
list handle, the application must initialize the handle by calling
When
an application no longer needs an attribute list, the application must
release the attribute list by calling
-
-
azn_status_t
aznAPI implementations should implement azn_status_t using a type that can be cast to integer, because, in keeping with normal C language conditional test conventions, successful completion of an AZN-routine always results in a return value that equates to AZN_S_COMPLETE (0).
Encapsulated in the returned status code are major and minor error codes. The major error codes are defined in the standard and are implementation independent. The minor error codes are implementation dependent, and their values and meanings should be recorded in the implementation documentation.
Two functions are defined to extract the major and minor codes
from the returned status:
The major error codes returned by
Name | Value | Meaning |
---|---|---|
[AZN_S_COMPLETE] | 0 | Successful completion. |
[AZN_S_FAILURE] | 1 | An implementation specific error or failure has occurred. |
[AZN_S_AUTHORIZATION_FAILURE] | 2 | The caller does not possess the required authority. |
[AZN_S_INVALID_CREDS_HDL] | 3 | The credential handle supplied does not point to a valid credentials chain. |
[AZN_S_INVALID_NEW_CREDS_HDL] | 4 | The credential handle supplied does not point to a valid credentials chain. |
[AZN_S_INVALID_ENTITLEMENTS_SVC] | 5 | The attribute entitlements service identifier is invalid. |
[AZN_S_INVALID_COMB_CREDS_HDL] | 6 | The credential handle supplied does not point to a valid credentials chain. |
[AZN_S_INVALID_MECHANISM_INFO] | 7 | The supplied security mechanism information is not valid or is in error. |
[AZN_S_INVALID_MECHANISM] | 8 | The mechanism identifier is invalid. |
[AZN_S_INVALID_STRING_VALUE] | 9 | The supplied string value is invalid. |
[AZN_S_UNKNOWN_LABEL] | 10 | The label supplied is not valid. |
[AZN_S_INVALID_ADDED_CREDS_HDL] | 11 | The credential handle supplied does not point to a valid credentials chain. |
[AZN_S_INVALID_PROTECTED_RESOURCE] | 12 | The protected resource identifier is invalid. |
[AZN_S_INVALID_OPERATION] | 13 | The specified operation on the resource is invalid. |
[AZN_S_INVALID_PAC] | 14 | The privilege attribute certificate structure is invalid. |
[AZN_S_INVALID_PAC_SVC] | 15 | The privilege attribute certificate service identifier is invalid. |
- | 16 | Unused. |
[AZN_S_INVALID_MOD_FUNCTION] | 17 | The credential modification function identifier is invalid. |
[AZN_S_INVALID_SUBJECT_INDEX] | 18 | The number used to index an individual credential is invalid. |
[AZN_S_UNIMPLEMENTED_FUNCTION] | 19 | The functionality of this function is not implemented by the underlying implementation. |
[AZN_S_INVALID_ATTRLIST_HDL] | 20 | The attribute list handle is invalid. |
[AZN_S_INVALID_ATTR_NAME] | 21 | The attribute name is invalid. |
[AZN_S_INVALID_BUFFER] | 22 | The buffer is invalid. |
[AZN_S_INVALID_BUFFER_REF] | 23 | The buffer reference is invalid. |
[AZN_S_INVALID_STRING_REF] | 24 | The string reference is invalid. |
[AZN_S_ATTR_VALUE_NOT_STRING_TYPE] | 25 | The returned entry value is not type string. |
[AZN_S_ATTR_INVALID_INDEX] | 26 | The index value for the multi- valued attribute is invalid. |
[AZN_S_INVALID_INTEGER_REF] | 27 | The integer reference is not valid. |
[AZN_S_INVALID_PERMISSION_REF] | 28 | The integer reference for the permission is not valid. |
[AZN_S_INVALID_AUTHORITY] | 29 | The authorization authority ID is invalid. |
[AZN_S_INVALID_APP_CONTEXT_HDL] | 30 | The attribute list handle for the application context is invalid. |
[AZN_S_INVALID_ENTITLEMENTS_HDL] | 31 | The attribute list handle for the entitlements is invalid. |
[AZN_S_INVALID_LABELING_SCHEME] | 32 | The labeling scheme identifier is unknown or invalid. |
[AZN_S_INVALID_INIT_DATA_HDL] | 33 | The attribute list handle for the initialization data is invalid. |
[AZN_S_INVALID_INIT_INFO_HDL] | 34 | The attribute list handle for the returned initialization info is invalid. |
[AZN_S_ATTR_VALUE_NOT_BUFFER_TYPE] | 35 | The returned entry value is not type buffer. |
[AZN_S_API_UNINITIALIZED] | 36 | A function other than
|
[AZN_S_API_ALREADY_INITIALIZED] | 37 |
aznAPI implementations are not required to be able to detect invalid handles, but should return an invalid handle major status code whenever they are able to detect that an input handle argument is not valid.
aznAPI functions which release data referred to by handles have been designed in a way which permits implementations to set the handles to invalid values to facilitate detection of later invalid uses of handles which refer to structures which have previously been released.
The tables in this section enumerate the constants defined by the specification, and the values which those constants must be defined to have.
The
azn_decision*
functions return a signed integer permission
argument. Legal values of that argument are shown in
Name | Value | Meaning |
---|---|---|
[AZN_C_PERMITTED] | 0 | Operation by credentials chain holder is permitted. |
[AZN_C_NOT_PERMITTED] | 1 | Operation by credentials chain holder is not permitted. |
Parameters of the type
azn_buffer_t
can be assigned and compared with the constant values shown in
Name | Value | Meaning |
---|---|---|
[AZN_C_EMPTY_BUFFER] | NULL | Empty data value-buffer. |
[AZN_C_NO_BUFFER] | NULL | No value-buffer is supplied or returned. |
A number of names have been defined in
A credential handle refers to a credentials chain consisting of the credentials of the initiator and a series of (zero or more) intermediaries through which the initiator's request has passed.
aznAPI implementations must ensure that the credential at the first
index in a credentials chain is the credential of the initiator of the
request. The constant [AZN_C_INITIATOR_INDEX] can be used in the
The
The only attribute which must be supported by an aznAPI
implementation is an audit identifier. This attribute allows aznAPI
callers to generate audit records which refer to the initiator of a
request without violating privacy by placing personal identification
information in the audit log. The initiator's audit ID can be obtained
by retrieving the string value for the entry whose name attribute is
specified by the constant [AZN_C_AUDIT_ID] from the attribute list
returned by
Several aznAPI functions accept context ACI as a parameter. Almost any kind of information could be used as context ACI, so the context ACI argument type in these functions is an attribute list. However, four types of context ACI are common to many authorization service implementations and are explicitly called for in the ISO 10181-3 specification, so portable attribute names and corresponding attribute value types have been defined to allow implementations to pass these context parameters to implementations.
[AZN_C_REQUEST_TIME],
[AZN_C_AUTHN_QUALITY], [AZN_C_REQUESTER_LOC], and
[AZN_C_REQUEST_ROUTE_QOP] can be used as the name attributes of
attribute list entries carrying the values of these common types of
context information.
Name | Value | Meaning |
---|---|---|
[AZN_C_INITIATOR_INDEX] | 0 | An integer representing the initiator's subject index within the credentials chain. |
[AZN_C_AUDIT_ID] | "AZN_AUDIT_ID" | An attribute name; the corresponding string value will contain a subject's audit identifier. |
[AZN_C_REQUEST_TIME] | "AZN_REQUEST_TIME" | An attribute name; the corresponding buffer value will contain a time_t structure representing time at which the access request occurred. |
[AZN_C_AUTHN_QUALITY] | "AZN_AUTHN_QUALITY" | An attribute name; the corresponding string value will describe the strength and mechanism of authentication used to establish the initiator's identity. |
[AZN_C_REQUESTER_LOC] | "AZN_REQUESTER_LOC" | An attribute name; the corresponding string value will contain the location (source address) from which the request was initiated. In the case of IP addresses, this will consist of a string containing a standard text representation of the numeric binary IP address. |
[AZN_C_REQUEST_ROUTE_QOP] | "AZN_REQUEST_ROUTE_QOP" | An attribute name; the corresponding string value will describe the security characteristics of the connection over which the request was transmitted from the initiator to the AEF. |
The
Name | Value | Meaning |
---|---|---|
[AZN_C_VERSION] | "AZN_VERSION" | An attribute name; the corresponding string value will contain a dotted-integer version number (for example, "3.3") passed back from initialization. |
Some of these services are optional.
See
If an implementation supports multiple providers of a service, it must identify each provider using a unique OID. The implementation's documentation must provide a list of supported providers and their OIDs.
Additionally, implementations which support multiple providers of a service must implement the get_providers call for that service. The get_providers calls are:
aznAPI applications select providers at runtime by passing the string form of the provider's OID as an argument to the calls listed above.
No implementation is required to support multiple providers of any of these services (including required services). All implementations (including implementations which support multiple providers of these services) must designate a default provider of each supported service.
Applications can select the default provider of a service by passing
the constant in
Name | Value | Meaning |
---|---|---|
[AZN_NULL_ID] | "" | The implementation should use the default provider of the invoked service. |
Examples of authentication mechanisms are SSL client authentication using an X.509 certificate, or Kerberos authentication using a Kerberos principal name and password.
The
The organization of this registration system is as follows:
-
-
ISO (1); National Member Body (2); UK (826); National (0); X/Open (1050)
-
-
"Authentication mechanisms for authorization credential acquisition"
When an application calls
Contents | Next section | Index |