The authenticated RPC routines provide a mechanism for establishing secure communications between clients and servers.
To engage in authenticated RPC, a client and server must agree on the authentication service to be used. The server's responsibility is to register its principal name and the authentication service to be supported with the RPC runtime. The client's responsibility is to establish the authentication service, a given protection level, and an authorization service for the server binding handle. The protection level determines the degree of protection applied to individual messages between the client and server. The authorization service determines the form in which the client's credentials will be presented to the server (for access checking).
Once authenticated RPC has been established between a client and server, the client issues remote procedure calls in the usual fashion, with all authentication and protection being handled by the DCE Security Service and the RPC runtime.
The following table relates several of the RPC runtime operations just discussed with specific routines or sets of routines.
Basic Runtime Routines
Description of Operation | Usage | Routine Name(s) |
Communications Routines |
Set the type of an RPC object with the RPC runtime | Server | rpc_object_set_type( ) |
Register RPC interfaces | Server | rpc_server_register_if( ) |
Select RPC protocol sequences | Server | rpc_network_inq_protseqs( ) and rpc_server_use_*protseq*_...( ) |
Obtain server binding handles | Server | rpc_server_inq_bindings( ) |
Register endpoints | Server | rpc_ep_register( ) and rpc_ep_register_no_replace( ) |
Unregister endpoints | Server | rpc_ep_unregister( ) |
Listen for calls | Server | rpc_server_listen( ) |
Manipulate string representations of binding information (string bindings) | Client | rpc_binding_from_string_binding( ) |
Client, Server | rpc_binding_to_string_binding( ), rpc_string_binding_compose( ), and rpc_string_binding_parse( ) T} | |
Change the RPC object in server binding information | Client | rpc_binding_set_object( ) |
Convert a client binding handle to a server binding handle | Server | rpc_binding_server_from_client( ) _ |
Name Service Interface Routines |
Export binding information to a namespace | Server | rpc_ns_binding_export( ) |
Search a namespace for binding information | Client | rpc_ns_binding_import_...( ), rpc_ns_binding_lookup_...( ), and rpc_ns_binding_select( ) |
Authentication Routines |
Authentication and authorization | Server, Client | rpc_*auth...( ) |