Hace poco tuve que desarrollar un módulo de Drupal para que los usuarios se loguearan a partir de los datos de usuarios situados en un sistema SAP/R3, mas tarde desarrollé otro para que los usuarios se loguearan mediante OAUTH (Escribí un post sobre OAUTH para Pymecrunch) y sus cuentas Twitter (A ver si lo comparto un día de estos).
En definitiva que para loguear usuarios en Drupal desde otros sistemas solo hay que seguir este código:
/* Validamos */
if ( !validarUsuario( $username, $password ) ) return FALSE;
/* Buscamos la cuenta de usuario */
$account = user_external_load(rawurlencode($username) .'@saplogin');
if (!$account->name) {
/* Si cuenta no encontrada creamos la cuenta */
$user_default = array( 'name' => $username, 'pass' => user_password(), 'init' => db_escape_string($username), 'status' => 1, 'authname_saplogin1' => rawurlencode($username) .'@saplogin' );
$user_default['roles'][DRUPAL_AUTHENTICATED_RID] = 'authenticated user';
$user = user_save('', $user_default);
} else {
/* Si cuenta existente asignamos */
$user = $account;
}
return TRUE;