# OpenID

OpenID és un sistema d'identificació digital descentralitzat, amb el qual un usuari pot identificar-se en una pàgina web a través d'un URL (o un XRI en la versió actual) i pot ser verificat per qualsevol servidor que suporti el protocol. La idea que hi ha al darrere és, doncs, que no calguin diferents comptes per a entrar en diferents llocs web, sinó que amb una única dada identificadora es pugui entrar en més d'un espai: un compte d'usuari OpenID facilita l'accés als llocs que suporten aquest protocol i no cal tenir un identificador per a cada lloc web que es vulgui visitar.
En els llocs que suportin OpenID, els usuaris no s'han de crear un nou compte per a tenir-hi accés: només els cal disposar d'un identificador creat en un servidor que verifiqui OpenID, anomenat proveïdor d'identitat o IdP.
El proveïdor d'identitat pot confirmar la identificació OpenID de l'usuari en un lloc que suporti aquest sistema.
A diferència d'arquitectures d'autenticació única, OpenID no especifica el mecanisme d'autenticació. Per tant, la seguretat d'una connexió OpenID depèn de la confiança que tingui el client OpenID en el proveïdor d'identitat. Si no hi ha confiança en el proveïdor, l'autenticació no serà adequada per a serveis bancaris o transaccions de comerç electrònic. Tanmateix, el proveïdor d'identitat pot emprar una autenticació forta que pugui ser emprada per a aquestes finalitats.
OpenID va prenent força gràcies a l'anunci de l'adopció d'aquest sistema per part d'alguns llocs grans, com Technorati. El programari Mediawiki té una extensió per a permetre l'ús mitjançant Open ID, però encara no s'utilitza en els servidors de la Wikipedia. AOL ja actua com a proveïdor d'OpenID. A més, Firefox s'ha plantejat com una de les prioritats del projecte 3 la integració d'OpenID i Microsoft està treballant per implementar Open ID 2.0 en Windows Vista.

## Desenvolupament

El protocol OpenID va ser desenvolupat originàriament per Brad Fitzpatrick, fundador de LiveJournal, tot i que David Recordon de VeriSign, Josh Hoyt de JanRain i Dick Hardt de Sxip en són ara coautors. Les futures especificacions d'OpenID estaran desenvolupades en una meritocràcia i basades en la llista de distribució. Per a donar suport a la implantació d'OpenID, un grup d'empreses va anunciar a l'agost del 2006 un programa de contribucions de desenvolupament, que oferia 5.000 dòlars als deu primers projectes de programari lliure que implementessin compatibilitat total amb OpenID. A partir de la versió 1.1, Open ID fa servir el protocol de cerca de serveis Yadis. Avui dia es desenvolupa la versió 2.0 de l'autenticació Open D, tot i que OpenID està esdevenint un marc que suportarà altres serveis d'identificació a més de l'autenticació.

## Terminologia

Un glossari bàsic dels termes emprats amb OpenID:
* Usuari final: persona que vol accedir amb la seva identitat digital a un lloc.
* Identificador: l'URL o XRI triats per l'usuari final com el seu identificador OpenID.
* Proveïdor d'identitat: un proveïdor de serveis que ofereix registre d'URL o XRI OpenID i facilita autenticació OpenID.
* Part confident: lloc que vol identificar la identitat de l'usuari final.
* Servidor o agent servidor: servidor que verifica la identitat de l'usuari final. Tant pot tractar-se del mateix servidor de l'usuari final (com ara el del seu bloc) com d'un servidor gestionat per un proveïdor d'identitat.
* Agent de l'usuari: programa (com ara el navegador) que l'usuari final utilitza per accedir a un proveïdor d'identitat o a una part confident.

## Com funciona OpenID

Un lloc web, anomenem-lo exemple.cat, que vol oferir accés als seus visitants a través d'OpenID, col·loca un formulari d'identificació a alguna de les seves pàgines. Al contrari que els típics formularis d'identificació que pregunten a l'usuari pel seu nom i contrasenya, en aquest cas només existeix un camp per a l'identificador OpenID. El lloc web pot optar per mostrar un petit logo OpenID al costat del camp. Aquest formulari estarà connectat a una implementació de la biblioteca client OpenID. Si, per exemple, la Griselda vol accedir a exemple.cat fent servir l'identificador OpenID, griselda.proveïdor-openid.org que ella ha registrat prèviament al proveïdor d'identitat proveïdor-openid.org, simplement va a exemple.cat i tecleja griselda.proveïdor-openid.org a la caixa d'identificació d'OpenID. A partir de la versió 2.0 de l'autenticació OpenID (i en algunes de les implementacions d'OpenID 1.1), la Griselda també pot identificar-se escrivint un i-nom com ara =exemple.griselda o =exemple.comunitat*griselda.
Si l'identificador és un URL, la primera cosa que ha de realitzar la part ( exemple.cat) és transformar-la en una forma canònica del tipus {{format ref}} http://griselda.proveidor-openid.org. Amb OpenID 1.0, la part confident sol·licita aleshores la pàgina web situada a l'esmentat URL i, mitjançant una etiqueta HTML d'enllaç, descobreix que el servidor del proveïdor és, suposem, {{format ref}} http://proveidor-openid.org/openid.auth.php. També descobreix si cal que utilitzi o no una identitat delegada (vegeu més avall). A partir d'OpenID 1.1, el client arribar a conèixer aquestes dades sol·licitant el document XRDS (anomenat també document Yadis) amb el tipus de contingut application/xrds+xml, que pot estar disponible a l'URL esmentat i que sempre estarà disponible a través d'una XRI.
Hi ha dues maneres amb les quals la part confident pot comunicar-se amb el proveïdor d'identitat:
* checkid_immediate, orientat a la identificació automàtica i on qualsevol comunicació entre els dos servidors es realitza com una tasca de fons, sense que l'usuari en sigui conscient;
* checkid_setup, en què l'usuari es comunica directament amb el servidor proveïdor fent servir el mateix navegador web que fa servir per a accedir al lloc de la part confident.
La segona opció és més popular al Web. Ara bé, també pot passar que un checkid_immediate acabi esdevenint un checkid_setup si l'operació no pot automatitzar-se.
En primer lloc, la part confident i el proveïdor (opcionalment) estableixen un secret compartit que la part confident s'encarrega d'emmagatzemar. Si es fa servir checkid_setup, la part confident redirigeix el navegador web de l'usuari cap al proveïdor. A l'exemple, el navegador de la Griselda seria redirigit a proveidor-openid.org de manera que la Griselda es pogués autenticar contra el proveïdor.
El mètode d'autenticació pot variar, però normalment un proveïdor d'OpenID demana una contrasenya (i aleshores possiblement emmagatzema la sessió de l'usuari fent servir galetes, tal com fan molts llocs amb autenticació basa en contrasenya). En el cas que la Griselda no tingués una sessió activa en el proveidor-openid.org, aquest li sol·licitaria la seva contrasenya. Un cop tingués la sessió oberta, el servidor li preguntaria sobre la confiança que li ofereix http://exemple.cat/openid-retorn.php (la pàgina designada per exemple.cat com a destí al qual l'usuari hauria de tornar després d'haver completat l'autenticació per rebre-hi els detalls de la seva identitat). Si la Griselda respon positivament, l'autenticació OpenID es considera reeixida i el navegador és redirigit a la pàgina de retorn indicada amb les credencials atorgades. Si la Griselda decideix no refiar-se del lloc de la part confident, el navegador també serà redirigit, però es notificarà el rebuig a la part confident, de manera que exemple.cat com a contrapartida es negarà a autenticar la Griselda.
No obstant això, el procés de connexió encara no ha acabat perquè en aquesta etapa, exemple.cat no pot decidir si les credencials rebudes realment van ser rebudes des de proveidor-openid.org. Si ells havien establert prèviament un secret compartit, la part confident pot validar el secret compartit rebut amb les credencials que tingués desades prèviament. Cada part confident és anomenada en condicions perquè des del secret compartit entre sessions mentre que una part confident sense condicions o muda haurà de fer una petició més a fons (check_authentication) per assegurar-se que les dades van venir de veritat de proveidor-openid.org.
Després que l'identificador de la Griselda hagi estat verificat, se la considerarà registrada a exemple.cat com a griselda.proveidor-openid.org. El lloc pot aleshores desar la sessió o, si aquest és el seu primer registre, demanar a la Griselda que introdueixi informació específica per a exemple.cat per acabar el registre.

## Fundació OpenID

La Fundació OpenID (als EUA) i la seva filial OpenID Europa es van crear el 2007. Són organitzacions sense ànim de lucre el paper de les quals és l'organització i el desenvolupament del marc OpenID per a la comunitat i l'administració de la propietat intel·lectual que se'n deriva.

## Identificadors OpenID

A partir de la versió 2.0 de l'autenticació OpenID (i en algunes implementacions d'OpenID 1.1), hi ha dos tipus d'identificadors: URLs i XRIs.

### URLs

Hi ha dues formes d'obtenir un URL OpenID vàlid que pugui ser emprat per a registrar-se en tots els llocs que suportin OpenID.
* Fer servir un URL existent que l'usuari final controli (com el seu bloc o pàgina personal) i, si sap editar HTML, podrà inserir al codi les etiquetes OpenID escaients tot seguint les instruccions de les especificacions d'OpenID (http://openid.net/specs.bml). Emprant un subdomini, es pot aconseguir que l'OpenID de cadascú sigui més fàcil d'escriure, però no és imprescindible.
* Registrar l'identificador d'OpenID de l'usuari final en un proveïdor d'identitats. Aquests ofereixen la possibilitat de registrar URLs (habitualment, tercers nivells de domini) configurats de forma automàtica per ser emprats amb serveis d'autenticació OpenID.

### XRIs

Els XRIs (acrònim d'eXtensible Resource Identifier) són un nou sistema d'identificació a Internet, dissenyat específicament per a identitats digitals de domini creuat. Els XRIs són de dos tipus: i-noms i i-números que són, normalment, registrats simultàniament com a equivalents. Els i-noms són reassignables (semblants a noms de domini), mentre que els i-números mai no són reassignats. Quan un i-nom és emprat com a identificador OpenID, aquest és resolt immediatament per l'i-número equivalent (l'element CanonicalID d'un document XRDS). Aquest i-número és l'identificador OpenID emmagatzemat per la part confident. Així, l'usuari i la part confident estan protegits contra els canvis d'identitat que podria haver-hi amb un URL basat en un nom DNS reassignable.

## Referències

* The Case for OpenID Arxivat 2008-06-23 a Wayback Machine. — Article de ZDNet que compara OpenID amb altres sistemes d'identitat digital escrit per Johannes Ernst (NetMesh) i David Recordon (aleshores a VeriSign)(anglès)
* OpenID: The RESTful approach to Single Sign-On Arxivat 2008-01-06 a Wayback Machine. - Breu aproximació (anglès)
* OpenID for non-SuperUsers - de Sam Ruby (anglès)

## Enllaços externs

* OpenID.net Lloc oficial d'OpenID (anglès)