Gio.DBusAuthObserver
Description: Reference for Gio.DBusAuthObserver

### Class

# GioDBusAuthObserver

since: 2.26

#### Description [src]

    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

- GObject

#### 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.