comparison mod_auth_external/README.markdown @ 1803:4d73a1a6ba68

Convert all wiki pages to Markdown
author Kim Alvefur <zash@zash.se>
date Fri, 28 Aug 2015 18:03:58 +0200
parents mod_auth_external/README.wiki@29f3d6b7ad16
children 8de50be756e5
comparison
equal deleted inserted replaced
1802:0ab737feada6 1803:4d73a1a6ba68
1 ---
2 labels:
3 - 'Stage-Alpha'
4 - 'Type-Auth'
5 summary: 'Authentication via external script/process'
6 ...
7
8 Introduction
9 ============
10
11 Allow client authentication to be handled by an external script/process.
12
13 Installation
14 ============
15
16 mod\_auth\_external depends on a Lua module called
17 [lpty](http://www.tset.de/lpty/). You can install it on many platforms
18 using [LuaRocks](http://luarocks.org/), for example:
19
20 sudo luarocks install lpty
21
22 Note: Earlier versions of the module did not depend on lpty. While using
23 the newer version is strongly recommended, you can find the [older
24 version
25 here](https://prosody-modules.googlecode.com/hg-history/50ee38e95e754bf1034d980364f93564028b2f34/mod_auth_external/mod_auth_external.lua)
26 if you need it (revision 50ee38e95e75 of the repository).
27
28 Configuration
29 =============
30
31 As with all auth modules, there is no need to add this to
32 modules\_enabled. Simply add in the global section, or for the relevant
33 hosts:
34
35 authentication = "external"
36
37 These options are specific to mod\_auth\_external:
38
39 -------------------------- -------------------------------------------------------------------------------------------------------------------------
40 external\_auth\_protocol May be "generic" or "ejabberd" (the latter for compatibility with ejabberd external auth scripts. Default is "generic".
41 external\_auth\_command The command/script to execute.
42 -------------------------- -------------------------------------------------------------------------------------------------------------------------
43
44 Two other options are also available, depending on whether the module is
45 running in 'blocking' or 'non-blocking' mode:
46
47 --------------------------- -------------- ------------------------------------------------------------------------------------------------------------------
48 external\_auth\_timeout blocking The number of seconds to wait for a response from the auth process. Default is 5.
49 external\_auth\_processes non-blocking The number of concurrent processes to spawn. Default is 1, increase to handle high connection rates efficiently.
50 --------------------------- -------------- ------------------------------------------------------------------------------------------------------------------
51
52 Blocking vs non-blocking
53 ------------------------
54
55 Non-blocking mode is automatically activated when:
56
57 - Running Prosody trunk ([nightly](http://prosody.im/nightly/) build
58 414+).
59 - [libevent](http://prosody.im/doc/libevent) is enabled in the config,
60 and LuaEvent is available.
61 - lpty (see installation above) is version 1.0.1 or later.
62
63 Protocol
64 ========
65
66 Prosody executes the given command/script, and sends it queries.
67
68 Your auth script should simply read a line from standard input, and
69 write the result to standard output. It must do this in a loop, until
70 there's nothing left to read. Prosody can keep sending more lines to the
71 script, with a command on each line.
72
73 Each command is one line, and the response is expected to be a single
74 line containing "0" for failure or "1" for success. Your script must
75 respond with "0" for anything it doesn't understand.
76
77 There are three commands used at the moment:
78
79 auth
80 ----
81
82 Check if a user's password is valid.
83
84 Example: `auth:username:example.com:abc123`
85
86 Note: The password can contain colons. Make sure to handle that.
87
88 isuser
89 ------
90
91 Check if a user exists.
92
93 Example: `isuser:username:example.com`
94
95 setpass
96 -------
97
98 Set a new password for the user. Implementing this is optional.
99
100 Example: `setpass:username:example.com:abc123`
101
102 Note: The password can contain colons. Make sure to handle that.
103
104 ejabberd compatibilty
105 ---------------------
106
107 ejabberd implements a similar protocol. The main difference is that
108 Prosody's protocol is line-based, while ejabberd's is length-prefixed.
109
110 Add this to your config if you need to use an ejabberd auth script:
111
112 external_auth_protocol = "ejabberd"
113
114 Compatibility
115 =============
116
117 ----- -------
118 0.8 Works
119 0.9 Works
120 ----- -------