package obus
Module OBus_auth.Server
Server-side authentication
Mechanisms
type mechanism_return = | Mech_continue of data(*Continue the authentication with this challenge
*)| Mech_ok of int option(*The client is authenticated. The argument is the user id the client is authenticated with.
*)| Mech_reject(*The client is rejected by the mechanism
*)
class virtual mechanism_handler : object ... endtype mechanism = {mech_name : string;(*The mechanism name
*)mech_exec : int option -> mechanism_handler;(*The mechanism creator. It receive the user id of the client, if available.
*)
}A server-side authentication mechanism
val mech_name : mechanism -> stringmech_name projection
val mech_exec : mechanism -> int option -> mechanism_handlermech_name projection
mech_exec projection
Predefined mechanisms
val mech_anonymous : mechanismval mech_external : mechanismval mech_dbus_cookie_sha1 : mechanismval default_mechanisms : mechanism listAuthentication
val authenticate :
?capabilities:capability list ->
?mechanisms:mechanism list ->
?user_id:int ->
guid:OBus_address.guid ->
stream:stream ->
unit ->
(int option * capability list) Lwt.tLaunch server-side authentication on the given stream. On success it returns the client uid and the list of capabilities that were successfully negotiated. A client uid of None means that the client used anonymous authentication, and may be disconnected according to server policy.
Note: authenticate does not read the first zero byte. You must read it by hand, and maybe use it to receive credentials.