Mercurial > prosody-modules
comparison mod_auth_token/mod_auth_token.lua @ 2956:d0ca211e1b0e
New HMAC token authentication module for Prosody.
| author | JC Brand <jc@opkode.com> |
|---|---|
| date | Tue, 27 Mar 2018 10:48:04 +0200 |
| parents | |
| children | 0fb12a4b6106 |
comparison
equal
deleted
inserted
replaced
| 2938:f000ba14d531 | 2956:d0ca211e1b0e |
|---|---|
| 1 -- Copyright (C) 2018 Minddistrict | |
| 2 -- | |
| 3 -- This file is MIT/X11 licensed. | |
| 4 -- | |
| 5 | |
| 6 local host = module.host; | |
| 7 local log = module._log; | |
| 8 local new_sasl = require "util.sasl".new; | |
| 9 local verify_token = module:require "token_auth_utils".verify_token; | |
| 10 | |
| 11 local provider = {}; | |
| 12 | |
| 13 | |
| 14 function provider.test_password(username, password, realm) | |
| 15 log("debug", "Testing signed OTP for user %s at host %s", username, host); | |
| 16 return verify_token( | |
| 17 username, | |
| 18 password, | |
| 19 realm, | |
| 20 module:get_option_string("otp_seed"), | |
| 21 module:get_option_string("token_secret"), | |
| 22 log | |
| 23 ); | |
| 24 end | |
| 25 | |
| 26 function provider.users() | |
| 27 return function() | |
| 28 return nil; | |
| 29 end | |
| 30 end | |
| 31 | |
| 32 function provider.set_password(username, password) | |
| 33 return nil, "Changing passwords not supported"; | |
| 34 end | |
| 35 | |
| 36 function provider.user_exists(username) | |
| 37 return true; | |
| 38 end | |
| 39 | |
| 40 function provider.create_user(username, password) | |
| 41 return nil, "User creation not supported"; | |
| 42 end | |
| 43 | |
| 44 function provider.delete_user(username) | |
| 45 return nil , "User deletion not supported"; | |
| 46 end | |
| 47 | |
| 48 function provider.get_sasl_handler() | |
| 49 local supported_mechanisms = {}; | |
| 50 supported_mechanisms["X-TOKEN"] = true; | |
| 51 return new_sasl(host, { | |
| 52 token = function(sasl, username, password, realm) | |
| 53 return provider.test_password(username, password, realm), true; | |
| 54 end, | |
| 55 mechanisms = supported_mechanisms | |
| 56 }); | |
| 57 end | |
| 58 | |
| 59 module:provides("auth", provider); |
