GDBusAuthObserver: GIO Reference Manual

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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:

    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`. | [nullable]

#### 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,
                   char              *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`. | [nullable]
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