what are 'metadata' and 'state of previous'? For the 'state of previous', is that general stuff or could be very application specific? I feel like those user related context should be handled by authenticator itself, say maintaining a map or using a cache for source_ip -> user_context mapping