## 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);

## Object Hierarchy

      GObject
       +----GDBusAuthObserver

## Signals

      "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 7. 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`.
Returns : | `TRUE` if the peer is authorized, `FALSE` if not.

Since 2.26

## Signal Details

### 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`.
`user_data` : | user data set when the signal handler was connected.
Returns : | `TRUE` if the peer is authorized, `FALSE` if not.

Since 2.26