Simple Sign-On con OpenID

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
akobashikawa's picture

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']);
}
?>

Comments

Hemos seguido con el trabajo

xamanu's picture

Hemos seguido con el trabajo de construir un Single-Sign-On. Aquí encuentras make-files para los diferentes setups: https://gitorious.org/openid_sso/makefiles/trees/master Expliqué un poco en un blog sobre esto, pero está en aleman, asi que pongo un enlace para que google te lo traduce horriblemente, pero te da una idea: http://translate.google.com/translate?js=n&prev=_t&hl=en&ie=UTF-8&layout...

osso_provider_feeds.make y osso_reyling_feeds.make es practicamente el camino que estaba presentando develoment seed en el enlace que pusiste.

Nosotros cambiamos la manera de intercambiar informacion entre provedor y otros sitios y en vez de Feeds con notación foaf (Friend of a Friend) usamos el nativo AX (attribute exchange) del estandard OpenID. Esta solución instalarías con osso_provider_ax.make y osso_reyling_ax.make

De todos modos toma en cuenta que todo este trabajo no está listo para utilizarlo asi no más. Son varios módulos que están interactuando y tienen que ser configurados. Tratamos de hacer lo más facil posible con los features y los make files pero seguramente habrán problemas y/o bugs en algún momento. Nosotros lo tenemos corriendo con dos clientes grandes y funciona muy bien, pero eso no te asegurar que te va a funcionar bien a ti.

Error al intentar

akobashikawa's picture

Hola, gracias.

Intenté pero no lo conseguí.

¿Cuál podría ser la causa de los errores?:

C:\bin\dev\xampp171\htdocs\drupal>drush make http://gitorious.org/openid_sso/makefiles/blobs/raw/master/osso_provider...
Make new site in the current directory? (y/n): y
Project information for features retrieved.                                 [ok]

Project information for openid_provider retrieved.                          [ok]

Project information for xrds_simple retrieved.                              [ok]

Project information for ctools retrieved.                                   [ok]

Project information for push_hub retrieved.                                 [ok]

Project information for drupal_queue retrieved.                             [ok]

Project information for feeds retrieved.                                    [ok]

Project information for job_scheduler retrieved.                            [ok]

Project information for drupal retrieved.                                   [ok]

drupal downloaded from                                                      [ok]

http://ftp.drupal.org/files/projects/drupal-6.20.tar.gz.
features downloaded from                                                    [ok]

http://ftp.drupal.org/files/projects/features-6.x-1.0.tar.gz.
Unable to download openid_provider from                                  [error]

:pserver:anonymous:anonymous@drupalcode.org:/cvs/drupal-contrib
contributions/modules/openid_provider.
xrds_simple downloaded from                                                 [ok]

http://ftp.drupal.org/files/projects/xrds_simple-6.x-1.0.tar.gz.
Unable to clone openid_provider_sso from                                 [error]

git://gitorious.org/openid_sso/openid_provider_sso.git.
Unable to clone osso_provider from                                       [error]

git://gitorious.org/openid_sso/osso_provider.git.
ctools downloaded from                                                      [ok]

http://ftp.drupal.org/files/projects/ctools-6.x-1.7.tar.gz.
push_hub downloaded from                                                    [ok]

http://ftp.drupal.org/files/projects/push_hub-6.x-1.0-beta1.tar.gz.
drupal_queue downloaded from                                                [ok]

http://ftp.drupal.org/files/projects/drupal_queue-6.x-1.1.tar.gz.
feeds downloaded from                                                       [ok]

http://ftp.drupal.org/files/projects/feeds-6.x-1.0-beta9.tar.gz.
job_scheduler downloaded from                                               [ok]

http://ftp.drupal.org/files/projects/job_scheduler-6.x-1.0-beta3.tar.gz.
Unable to clone keyauth from                                             [error]

git://gitorious.org/openid_sso/keyauth.git.
Unable to clone push_user from                                           [error]

git://gitorious.org/openid_sso/push_user.git.

Primero los make files

xamanu's picture

Primero los make files todavia querian bajar los modulos por cvs en vez de git. Lo corregi.
Aparte de los otros que te hicieron problemas eran repositorios git. Puede ser que no tienes GIT instalado?

Hay ahora un screencast (en

xamanu's picture

Hay ahora un screencast (en ingles) en como instalar Omniauth: http://vimeo.com/25103388
Saludos.

Spanish

Group organizers

Group events

Add to calendar

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week