Class

GioDBusAuthObserver

since: 2.26

Description

final class Gio.DBusAuthObserver : GObject.Object {
  /* No available fields */
}

GDBusAuthObserver provides a mechanism for participating in how a GDBusServer (or a GDBusConnection) authenticates remote peers.

Simply instantiate a GDBusAuthObserver and connect to the signals you are interested in. Note that new signals may be added in the future.

Controlling Authentication Mechanisms

By default, a GDBusServer or server-side GDBusConnection will allow any authentication mechanism to be used. If you only want to allow D-Bus connections with the EXTERNAL mechanism, which makes use of credentials passing and is the recommended mechanism for modern Unix platforms such as Linux and the BSD family, you would use a signal handler like this:

static gboolean
on_allow_mechanism (GDBusAuthObserver *observer,
                    const gchar       *mechanism,
                    gpointer           user_data)
{
  if (g_strcmp0 (mechanism, "EXTERNAL") == 0)
    {
      return TRUE;
    }

  return FALSE;
}

Controlling Authorization

By default, a GDBusServer or server-side GDBusConnection will accept connections from any successfully authenticated user (but not from anonymous connections using the ANONYMOUS mechanism). If you only want to allow D-Bus connections from processes owned by the same uid as the server, since GLib 2.68, you should use the G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER flag. It’s equivalent to the following signal handler:

static gboolean
on_authorize_authenticated_peer (GDBusAuthObserver *observer,
                                 GIOStream         *stream,
                                 GCredentials      *credentials,
                                 gpointer           user_data)
{
  gboolean authorized;

  authorized = FALSE;
  if (credentials != NULL)
    {
      GCredentials *own_credentials;
      own_credentials = g_credentials_new ();
      if (g_credentials_is_same_user (credentials, own_credentials, NULL))
        authorized = TRUE;
      g_object_unref (own_credentials);
    }

  return authorized;
}

Available since: 2.26

Ancestors

Constructors

g_dbus_auth_observer_new

Creates a new GDBusAuthObserver object.

since: 2.26

Instance methods

g_dbus_auth_observer_allow_mechanism

Emits the GDBusAuthObserver::allow-mechanism signal on observer.

since: 2.34

g_dbus_auth_observer_authorize_authenticated_peer

Emits the GDBusAuthObserver::authorize-authenticated-peer signal on observer.

since: 2.26

Methods inherited from GObject (43)

Please see GObject for a full list of methods.

Signals

Gio.DBusAuthObserver::allow-mechanism

Emitted to check if mechanism is allowed to be used.

since: 2.34

Gio.DBusAuthObserver::authorize-authenticated-peer

Emitted to check if a peer that is successfully authenticated is authorized.

since: 2.26

Signals inherited from GObject (1)
GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.