## GDBusAuthObserver

GDBusAuthObserver — Object used for authenticating connections

## Synopsis

    #include <gio/gio.h>

                        GDBusAuthObserver;
    GDBusAuthObserver * g_dbus_auth_observer_new            (void);
    gboolean            g_dbus_auth_observer_authorize_authenticated_peer
                                                            (GDBusAuthObserver *observer,
                                                             GIOStream *stream,
                                                             GCredentials *credentials);
    gboolean            g_dbus_auth_observer_allow_mechanism
                                                            (GDBusAuthObserver *observer,
                                                             const gchar *mechanism);

## Object Hierarchy

      GObject
       +----GDBusAuthObserver

## Signals

      "allow-mechanism"                                : Run Last
      "authorize-authenticated-peer"                   : Run Last

## Description

The GDBusAuthObserver type 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

For example, if you only want to allow D-Bus connections from processes owned by the same uid as the server, you would use a signal handler like the following:

Example 11. Controlling Authentication

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20

    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;
    }

## Details

### GDBusAuthObserver

    typedef struct _GDBusAuthObserver GDBusAuthObserver;

The GDBusAuthObserver structure contains only private data and should only be accessed using the provided API.

Since 2.26

### g_dbus_auth_observer_new ()

    GDBusAuthObserver * g_dbus_auth_observer_new            (void);

Creates a new GDBusAuthObserver object.

Returns : | A GDBusAuthObserver. Free with `g_object_unref()`.

Since 2.26

### g_dbus_auth_observer_authorize_authenticated_peer ()

    gboolean            g_dbus_auth_observer_authorize_authenticated_peer
                                                            (GDBusAuthObserver *observer,
                                                             GIOStream *stream,
                                                             GCredentials *credentials);

Emits the "authorize-authenticated-peer" signal on `observer`.

`observer` : | A GDBusAuthObserver.
`stream` : | A GIOStream for the GDBusConnection.
`credentials` : | Credentials received from the peer or `NULL`. [allow-none]
Returns : | `TRUE` if the peer is authorized, `FALSE` if not.

Since 2.26

### g_dbus_auth_observer_allow_mechanism ()

    gboolean            g_dbus_auth_observer_allow_mechanism
                                                            (GDBusAuthObserver *observer,
                                                             const gchar *mechanism);

Emits the "allow-mechanism" signal on `observer`.

`observer` : | A GDBusAuthObserver.
`mechanism` : | The name of the mechanism, e.g. `DBUS_COOKIE_SHA1`.
Returns : | `TRUE` if `mechanism` can be used to authenticate the other peer, `FALSE` if not.

Since 2.34

## Signal Details

### The `"allow-mechanism"` signal

    gboolean            user_function                      (GDBusAuthObserver *observer,
                                                            gchar             *mechanism,
                                                            gpointer           user_data)      : Run Last

Emitted to check if `mechanism` is allowed to be used.

`observer` : | The GDBusAuthObserver emitting the signal.
`mechanism` : | The name of the mechanism, e.g. `DBUS_COOKIE_SHA1`.
`user_data` : | user data set when the signal handler was connected.
Returns : | `TRUE` if `mechanism` can be used to authenticate the other peer, `FALSE` if not.

Since 2.34

### The `"authorize-authenticated-peer"` signal

    gboolean            user_function                      (GDBusAuthObserver *observer,
                                                            GIOStream         *stream,
                                                            GCredentials      *credentials,
                                                            gpointer           user_data)        : Run Last

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

`observer` : | The GDBusAuthObserver emitting the signal.
`stream` : | A GIOStream for the GDBusConnection.
`credentials` : | Credentials received from the peer or `NULL`. [allow-none]
`user_data` : | user data set when the signal handler was connected.
Returns : | `TRUE` if the peer is authorized, `FALSE` if not.

Since 2.26