DBusAuthObserver
Object Hierarchy:
Description:
[ Version ( since = "2.26" ) ]
public sealed class DBusAuthObserver : Object
`GDBusAuthObserver` provides a mechanism for participating in how a [class@Gio.
DBusServer] (or a [class@Gio.DBusConnection]) 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:
```c 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:
```c 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; } ```