## GDBusAuthObserver

GDBusAuthObserver — Object used for authenticating connections

## Functions

GDBusAuthObserver * | g_dbus_auth_observer_new ()
gboolean | g_dbus_auth_observer_authorize_authenticated_peer ()
gboolean | g_dbus_auth_observer_allow_mechanism ()

## Signals

gboolean | allow-mechanism | Run Last
gboolean | authorize-authenticated-peer | Run Last

## Types and Values

| GDBusAuthObserver

## Object Hierarchy

        GObject
        ╰── GDBusAuthObserver

## Includes

    #include <gio/gio.h>

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

#### Controlling Authentication

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:

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

## Functions

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

#### Parameters

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

#### Parameters

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

## Types and Values

### GDBusAuthObserver

    typedef struct _GDBusAuthObserver GDBusAuthObserver;

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

Since: 2.26

## Signal Details

### The `“allow-mechanism”` signal

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

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

#### Parameters

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.

Flags: Run Last

Since: 2.34

### The `“authorize-authenticated-peer”` signal

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

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

#### Parameters

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.

Flags: Run Last

Since: 2.26