User Tools

Site Tools


doc:appunti:net:openid

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:net:openid [2009/12/20 19:31] niccolodoc:appunti:net:openid [2011/05/04 16:57] (current) – [php-openid] niccolo
Line 2: Line 2:
  
 ===== Cos'è e come funziona ===== ===== Cos'è e come funziona =====
 +
 +Si tratta di un **sistema di autenticazione per siti web**. La propria identità viene registrata presso un server OpenID e protetta da una password, altri siti web possono essere configurati come client OpenID e quindi richiedere l'autenticazione al server.
 +
 +In questo modo è possibile gestire le proprie credenziali sul server OpenID ed utilizzare sempre la stessa password per accedere a tutti i siti client.
 +
 +La password viene registrata presso il server generalmente in formato hash md5 e non necessita di transitare mai in chiaro sulla rete.
 +
 +È possibile utilizzare uno dei numerosi server OpenID per registrare la propria identità, oppure allestire in proprio un server OpenID completo o un semplice server personale per gestire una sola identità.
  
 ===== Registrare uno OpenID ===== ===== Registrare uno OpenID =====
Line 20: Line 28:
  
 Il sito che ha chiesto l'autenticazione OpenID memorizza un cookie con il quale rimaniamo autenticati senza digitare nuovamente la password. Il sito che ha chiesto l'autenticazione OpenID memorizza un cookie con il quale rimaniamo autenticati senza digitare nuovamente la password.
 +
 +È possibile **eliminare un account** da myOpenID, il provider assicura che lo stesso username non verrà assegnato nuovamente per evitare che qualcuno possa rubare l'identità. Contestualmente viene anche assegnato un //recovery code//, nel caso si cambiasse idea.
  
 ===== Allestire un provider OpenID personale ===== ===== Allestire un provider OpenID personale =====
 +
 +==== phpMyID ====
 +
 +FIXME
 +
 +**NOTA:** Dal sito di phpMyID: **phpMyID is no longer developed or maintained**. Inoltre phpMyID non è compatibie con ambienti PHP rinforzati, come Apache Suhosin installato da Debian Squeeze. Ecco il messaggio di errore:
 +
 +<code>
 +phpMyID is not compatible with 'suhosin'
 +</code>
 +
 +Per forzare il funzionamento anche in presenza di Suhosin dovrebbe bastare disabilitare tale funzione nel VirtualHost (si consiglia di farlo solo se il VirtualHost è dedicato esclusivamente a phpMyID):
 +
 +<file>
 +php_flag suhosin.simulation On
 +</file>
 +
 +quindi in **''MyID.config.php''** impostare nell'array **''%%$GLOBALS['profile']%%''** l'elemento **''%%'allow_suhosin' => true%%''**.
 +
 +FIXME
  
 Scarichiamo il software **[[http://siege.org/projects/phpMyID/|phpMyID]]** e scompattiamo i file **''MyID.config.php''** e **''MyID.php''** in una directory accessibile via web. Nel primo si impostano **''auth_username''** e **''auth_password''**. Per calcolare l'hash di ''auth_password'': Scarichiamo il software **[[http://siege.org/projects/phpMyID/|phpMyID]]** e scompattiamo i file **''MyID.config.php''** e **''MyID.php''** in una directory accessibile via web. Nel primo si impostano **''auth_username''** e **''auth_password''**. Per calcolare l'hash di ''auth_password'':
Line 29: Line 59:
 </code> </code>
  
-Infine si crea un ''index.html'' che indica  (notare che il link deve deve avere un href assoluto):+Infine si crea un ''index.html'' che indica il link a cui risponde il server (notare che l'href deve essere assoluto):
  
 <code html> <code html>
Line 41: Line 71:
 </code> </code>
  
-L'OpenID è l'URL al quale è disponibile l'''index.html''.+L'OpenID è l'URL con il quale si accede all'''index.html''.
  
-Nel file di configurazione si possono impostare altre informazioni personali, tipo nome e cognome, indirizzo email, ecc.+La password viene richiesta dal server come autenticazione HTTP Digest, quindi transita crittografata con hash md5, sebbene la connessione sia HTTP. 
 + 
 +Nel file di configurazione si possono impostare altre informazioni personali, tipo nome e cognome, indirizzo email, una foto, ecc. 
 + 
 +==== php-openid ==== 
 + 
 +FIXME 
 + 
 +**NOTA:** Questa configurazione non è funzionante: 
 + 
 +  * Come definire nomi utente e password nell'Auth_OpenID_FileStore? 
 +  * Pare che il server risponda a richieste del tipo ''%%http://hostname/server.php/idpage?user=USERNAME%%'', come usare invece l'URL radice (''%%http://hostname/%%'') visto che si tratta di un vanity URL con un solo utente? 
 +  * Dalla documentazione: //It does not require passwords//. Che razza di server è allora? 
 + 
 +La libreria **php-openid** contiene sia il codice per un client che il codice per un server. Il server è in ''/usr/share/doc/php-openid/examples/server/'', bisogna copiarlo in una directory accessibile via web. 
 + 
 +La configurazione si esegue scompattando il file **''setup.php.gz''** e puntandoci il browser. C'è un problema con il PHP 5.3.3 e l'istruzione **''dl()''** che genera un errore fatale (tale funzione dovrebbe solo essere deprecata), purtroppo l'errore //Call to undefined function dl()// non viene segnalato nel log di PHP. 
 + 
 +Come workaround si può definire la funzione all'inizio del file **''setup.php''**: 
 + 
 +<code php> 
 +function dl($str) { 
 +    return false; 
 +
 +</code> 
 + 
 +Viene generato a video il file di configurazione che deve essere salvato come **''config.php''**: 
 + 
 + 
 +<code php> 
 +<?php 
 +/** 
 + * The URL for the server. 
 + * 
 + * This is the location of server.php. For example: 
 + * 
 + * $server_url = 'http://example.com/~user/server.php'; 
 + * 
 + * This must be a full URL. 
 + */ 
 +$server_url = "http://niccolo.rigacci.org/"; 
 + 
 +/** 
 + * Initialize an OpenID store 
 + * 
 + * @return object $store an instance of OpenID store (see the 
 + * documentation for how to create one) 
 + */ 
 +function getOpenIDStore() 
 +
 +    require_once "Auth/OpenID/FileStore.php"; 
 +    return new Auth_OpenID_FileStore("/tmp/openid"); 
 +
 + 
 +?> 
 +</code>
  
doc/appunti/net/openid.1261333878.txt.gz · Last modified: 2009/12/20 19:31 by niccolo