protected function ensure(array &$source, string $key)
    {
        if (!isset($source[$key]) || !$source[$key]) {
            throw new \Caridea\Auth\Exception\MissingCredentials();
        }
        return $source[$key];
    }