view misc/sasl/example.lua @ 5401:c8d04ac200fc

mod_http_oauth2: Reject loopback URIs as client_uri This really should be a proper website with info, https://localhost is not good enough. Ideally we'd validate that it's got proper DNS and is actually reachable, but triggering HTTP or even DNS lookups seems like it would carry abuse potential that would best to avoid.
author Kim Alvefur <zash@zash.se>
date Tue, 02 May 2023 16:20:55 +0200
parents 7d2fcc7a15f7
children
line wrap: on
line source

local method = {}
local method_mt = { __index = method }

-- This should return a set of supported mechanisms
function method:mechanisms()
	return {
		["OAUTH-SOMETHING"] = true;
	}
end

-- Called when a mechanism is selecetd
function method:select(mechanism)
	return mechanism == "OAUTH-SOMETHING";
end

-- Called for each message received
function method:process(message)
	-- parse the message
	if false then
		-- To send a SASL challenge:
		return "challenge", "respond-to-this";
	end

	if false then
		-- To fail, send:
		return "failure", "not-authorized", "Helpful error message here";
	end

	self.username = "someone";
	return "success";
end

local function new_sasl()
	return setmetatable({}, method_mt);
end

function method:clean_clone()
	return setmetatable({}, method_mt);
end

local provider = {}

function provider.get_sasl_handler()
	return new_sasl();
end

module:provides("auth", provider);