no te funciona porque desde jQuery asignas el password con el nombre "clave" y no con el mismo nombre en el form "
password" para CI es trasparente si viene por ajax siempre que sea por POST y con la misma estructura, además ¿para que te complicas la vida?: usa jQuery.
serialize() y así te evitas de concatenaciones absurdas y cuando implementes protección CSRF ya lo tendrás cubierto