rpc_server_register_auth_info(3rpc)
Registers authentication information with the RPC runtime
Used by server applications.
Synopsis
#include <dce/rpc.h>
void rpc_server_register_auth_info(
unsigned_char_t *server_princ_name,
unsigned32 authn_svc,
rpc_auth_key_retrieval_fn_t get_key_fn,
void *arg,
unsigned32 *status);
Parameters
Input
server_princ_name Specifies the principal name to use for the server when authenticating remote procedure calls using the service specified by authn_svc. The content
of the name and its syntax is defined by the authentication service in use.
authn_svc Specifies the authentication service to use when the server receives a remote procedure call request. The following authentication services are supported:
rpc_c_authn_none |
No authentication. |
rpc_c_authn_dce_secret |
DCE shared-secret key authentication. |
rpc_c_authn_dce_public |
DCE public key authentication (reserved for future use). |
rpc_c_authn_default |
DCE default authentication service. |
get_key_fn Specifies the address of a server-provided routine that returns encryption keys.
The following C definition for rpc_auth_key_retrieval_fn_t illustrates the prototype for the encryption key acquisition routine:
typedef void (*rpc_auth_key_retrieval_fn_t) ( void *arg, /* in */ unsigned_char_t
*server_princ_name, /* in */ unsigned32 key_type, /* in */ unsigned32 key_ver, /* in */
void **key, /* out */ unsigned32 *status /* out */ );
The RPC runtime passes the server_princ_name parameter value specified on the call to rpc_server_register_auth_info( ), as the server_princ_name parameter
value, to the get_key_fn key acquisition routine. The RPC runtime automatically provides a value for the key version (key_ver) parameter. For a key_ver value of
0 (zero), the key acquisition routine must return the most recent key available. The routine returns the key in the key parameter.
Note: The key_type parameter specifies a Kerberos encryption key type. Because currently the DCE supports only DES encryption, this parameter can be ignored.
If the key acquisition routine, when called from the rpc_server_register_auth_info( ) routine, returns a status other than rpc_s_ok, the rpc_server_register_auth_info( )
routine fails and returns the error status to the calling server.
If the key acquisition routine, when called by the RPC runtime while authenticating a client remote procedure call request, returns a status other than rpc_s_ok, the request fails and the
RPC runtime returns the error status to the client.
arg Specifies an argument to pass to the get_key_fn key acquisition routine, if specified. (See the description of the get_key_fn parameter for details.)
Specify NULL for arg to use the default key table file, /krb/v5srvtab. The calling server must be root to access this file.
If arg is a key table file name, the file must have been created with the ktadd command. If the specified key table file resides in /krb5, you can supply only the file
name. If the file does not reside in /krb5, you must supply the full path name. You must prepend the file's absolute path name with the prefix FILE:.
Output
status Returns the status code from this routine. This status code indicates whether the routine completed successfully or, if not, why not.
Description The rpc_server_register_auth_info( ) routine registers an authentication service to use for authenticating remote procedure calls to a particular server
principal. This routine is used for server-key based authentication. Use the rpc_server_register_auth_ident( ) routine for user-to-user authentication.
A server calls this routine once for each authentication service and principal name combination that it wants to register. The authentication service specified by a client (using the
rpc_binding_set_auth_info( ) routine) must be one of the authentication services registered by the server. If it is not, the client's remote procedure call request fails with an
rpc_s_unknown_authn_service status code.
The following table shows the RPC runtime behavior for acquiring encryption keys for each supported authentication service. Note that if authn_svc is rpc_c_authn_default, then
get_key_fn must be NULL.
RPC Key Acquisition for Authentication Services |
authn_svc |
get_key_fn |
arg |
Runtime Behavior |
rpc_c_authn_default |
NULL |
NULL |
Uses the default method of encryption key acquisition from the default key table. |
rpc_c_authn_default |
NULL |
non-NULL |
Uses the default method of encryption key acquisition from the specified key table. |
rpc_c_authn_default |
non-NULL |
Ignored |
Error returned. |
rpc_c_authn_none |
Ignored |
Ignored |
No authentication performed. |
rpc_c_authn_dce_secret |
NULL |
NULL |
Uses the default method of encryption key acquisition from the default key table. |
rpc_c_authn_dce_secret |
NULL |
non-NULL |
Uses the default method of encryption key acquisition from the specified key table. |
rpc_c_authn_dce_secret |
non-NULL |
NULL |
Uses the specified encryption key acquisition routine to obtain keys from the default key table. |
rpc_c_authn_dce_secret |
non-NULL |
non-NULL |
Uses the specified encryption key acquisition routine to obtain keys from the specified key table. |
rpc_c_authn_dce_public |
Ignored |
Ignored |
(Reserved for future use.) |
Return Values No value is returned.
Errors
The following describes a partial list of errors that might be returned. Refer to the OSF DCE Problem Determination Guide for complete descriptions of all error messages.
rpc_s_ok Success.
rpc_s_unknown_authn_service Unknown authentication service.
rpc_s_key_func_not_allowed authn_svc is rpc_c_authn_default and a non-null value was supplied for get_key_fn parameter.
Related Information Functions: rpc_binding_set_auth_info(3rpc)
rpc_server_register_auth_ident(3rpc)
|