How RAD Works

In RAD architecture, the clients can be local or remote, and the clients interact with the RAD modules to perform various administrative activities. For example, a client interacts with the ZFS management RAD module to perform storage-related activities. These RAD clients can be written in C, Java, or Python.

The following figure shows the architecture of RAD.

Architecture of RAD


Graphic shows RAD modules on the server authenticating to RAD clients locally and over the network

RAD uses three different types of authentication:

  • Implicit – Used for local connections, for example, using rc_connect_unix(NULL, ...). The RAD daemon reads the user's credentials from the calling process.

  • Explicit with PAM – Performed by using APIs such as rc_auth_login() and rc_connect_uri() in C client, rad.auth.RadAuth class in Python, and RadAuthHandler in Java.

  • Explicit with GSS – Performed by using APIs rc_connect_gss() or rc_connect_uri() in C client. This requires Kerberos setup. For more information about using Kerberos with RAD, see Generic Security Services API Transport in RAD.

To use the client bindings you must install the appropriate client program packages.

  • For C – solaris/system/management/rad/client/rad-c

  • For Java – solaris/system/management/rad/client/rad-java

  • For Python – solaris/system/management/rad/client/rad-python-37, solaris/system/management/rad/client/rad-python-35, or solaris/system/management/rad/client/rad-python-27, depending on the Python version required

To use radadrgen to generate API-specific language client and server bindings, see radadrgen Processing Tool in Remote Administration Daemon Module Developer's Guide.