Hola
Ahora vengo implementando una solución donde un site llamado Plan usará los usuarios ya registrados en un site llamado Control.
Control será el proveedor openID
Activé el módulo OpenID en Plan e instalé el módulo OpenID Provider en Control (también el módulo pathauto para cambiar el url de los usuarios).
Asi, para usar OpenID en Plan hay que usar un id similar a:
http://mysite.com/control/users/antonio/openid
Cómo es incomodo poner todo eso, he pensado que pongan sólo su nombre y con programación intervenga poniendo lo demás e invocando el login.
Imaginaba que había más módulos complementarios para esto, pero está un poco difícil la búsqueda.
Descubrí es que eso que busco se denomina Simple Sign-On.
Encontré este artículo http://developmentseed.org/blog/2010/mar/02/simple-sign-openid e instalé OpenID SSO, que viene como profile, pero no me funcionó tan bien como aparece en el video. Había dificultades con los registros de nuevos usuarios y su login.
Alguna idea o ayuda que pudieran indicarme?
Mientras tanto estoy usando un bloque de login alterno con la validación OpenID ligeramente modificada:
<?php
/**
* Implements hook_block
*/
function misc_block($op = 'list', $delta = 0, $edit = array()) {
switch ($op) {
case 'list':
$blocks[0]['info'] = t('Login OpenID Control');
return $blocks;
case 'view':
$blocks['subject'] = t('My Account');
$blocks['content'] = drupal_get_form('misc_openid_login_form');
return $blocks;
}
}
function misc_openid_login_form() {
$openid_provider_url = 'http://'.$_SERVER['HTTP_HOST'].'/control/';
$form['openid_identifier'] = array(
'#type' => 'textfield',
'#title' => t('Username'),
'#description' => t('Username in').l('Control', $openid_provider_url).'<br/>'
.'<em>'.t('To log in as another user, before close your associated session.
').'</em>',
'#required' => TRUE,
'#size' => 13,
'#maxlength' => 255
);
$form['openid.return_to'] = array('#type' => 'hidden', '#value' => url('openid/authenticate', array('absolute' => TRUE, 'query' => user_login_destination())));
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Log in')
);
return $form;
}
function misc_openid_login_form_validate($form, &$form_state) {
$return_to = $form_state['values']['openid.return_to'];
if (empty($return_to)) {
$return_to = url('', array('absolute' => TRUE));
}
$openid_provider_url = 'http://'.$_SERVER['HTTP_HOST'].'/control/';
$openid_identifier = $openid_provider_url.'users/'.$form_state['values']['openid_identifier'].'/openid';
openid_begin($openid_identifier, $return_to, $form_state['values']);
}
?>