gio.dbus_auth_observer

Module for [DBusAuthObserver] class

Types 3

[gio.dbus_auth_observer.DBusAuthObserver] provides a mechanism for participating in how a [gio.dbus_server.DBusServer] (or a [gio.dbus_connection.DBusConnection]) authenticates remote peers.

Simply instantiate a [gio.dbus_auth_observer.DBusAuthObserver] 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 [gio.dbus_server.DBusServer] or server-side [gio.dbus_connection.DBusConnection] 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:

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 [gio.dbus_server.DBusServer] or server-side [gio.dbus_connection.DBusConnection] 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 [gio.types.DBusServerFlags.AuthenticationRequireSameUser] flag. It’s equivalent to the following signal handler:

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

Methods
GType _gType() @property
DBusAuthObserver self()Returns `this`, for use in `with` statements.
DBusAuthObserverGidBuilder builder()Get builder for [gio.dbusauthobserver.DBusAuthObserver] Returns: New builder object
bool allowMechanism(string mechanism)Emits the #GDBusAuthObserver::allow-mechanism signal on observer.
bool authorizeAuthenticatedPeer(gio.iostream.IOStream stream, gio.credentials.Credentials credentials = null)Emits the #GDBusAuthObserver::authorize-authenticated-peer signal on observer.
gulong connectAllowMechanism(T)(T callback, Flag!"After" after = No.After) if (isCallable!T && is(ReturnType!T == bool) && (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] == string))) && (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] : gio.dbus_auth_observer.DBusAuthObserver))) && Parameters!T.length < 3)Connect to `AllowMechanism` signal.
gulong connectAuthorizeAuthenticatedPeer(T)(T callback, Flag!"After" after = No.After) if (isCallable!T && is(ReturnType!T == bool) && (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gio.iostream.IOStream))) && (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] : gio.credentials.Credentials))) && (Parameters!T.length < 3 || (ParameterStorageClassTuple!T[2] == ParameterStorageClass.none && is(Parameters!T[2] : gio.dbus_auth_observer.DBusAuthObserver))) && Parameters!T.length < 4)Connect to `AuthorizeAuthenticatedPeer` signal.
Constructors
this(void * ptr, Flag!"Take" take)
this()Creates a new #GDBusAuthObserver object. Returns: A #GDBusAuthObserver. Free with [gobject.object.ObjectWrap.unref].

Fluent builder for [gio.dbus_auth_observer.DBusAuthObserver]