2009-09-19 5 views
7

Cuál debería usar para indexar a un usuario desde un proceso de autenticación Openid. "openid_identity" o "openid_claimed_id"? Im utilizando Dope OpenId clase y datos devueltos es:OpenID: ¿Cuál debería usar para indexar un usuario "openid_identity" o "openid_claimed_id"?

[openid_ns] => http://specs.openid.net/auth/2.0 
[openid_mode] => id_res 
[openid_return_to] => http://localhost/login/authenticate 
[openid_claimed_id] => https://me.yahoo.com/a/wK7..MjM-#607 
[openid_identity] => https://me.yahoo.com/a/wK7...MjM- 
[openid_realm] => http://localhost/ 
[openid_assoc_handle] =>odm...j24yhwlT...2TOXQ9.sifIz3eLZoU.....jOoGM...9VPcMVavQkVgEQ-- 
[openid_response_nonce] => 2009-09-19T12:35:08Z95e...WtOYlQ-- 
[openid_signed] => assoc_handle,claimed_id,identity,mode,ns,op_endpoint,response_nonce,return_to,signed,ns.pape,pape.auth_level.ns.nist,pape.auth_level.nist,pape.auth_policies 
[openid_op_endpoint] => https://open.login.yahooapis.com/openid/op/auth 
[openid_ns_pape] => http://specs.openid.net/extensions/pape/1.0 
[openid_pape_auth_level_ns_nist] => http://csrc.nist.gov/publications/nistpubs/800-63/SP800-63V1_0_2.pdf 
[openid_pape_auth_level_nist] => 0 
[openid_pape_auth_policies] => http://schemas.openid.net/pape/policies/2007/06/none 
[openid_sig] => kO7......EitU= 

Gracias

Respuesta

-2

Siempre debe almacenar la forma canónica de la OpenID del usuario proporcionada como entrada debido a la delegación de OpenID.

En su caso, parece que la identidad reclamada tiene un identificador de fragmento al final que es irrelevante para el proceso OpenID.

+0

Hice una búsqueda encontré que debería usar openid_claimed_id, sitio como yahoo usa el fragmento en el openid_claimed_id y esto es diferente de cada ejemplo de fragmento https://me.yahoo.com/a/wK7..MjM-#607 es diferente de https://me.yahoo.com/a/wK7..MjM-#608 No estoy seguro acerca de las fuentes, también son viejas .. Gracias por su respuesta. Todavía confundo cuál debería usar :( – mozlima

+0

El fragmento no se envía al servidor, solo JavaScript puede procesarlo. Sería bastante extraño si tiene un significado para el proceso OpenID. Como dije: use una forma canónica de la entrada del usuario como OpenID! Yahoo no sabrá sobre las delegaciones OpenID que ocurrieron antes. Pero el usuario aún sabe mejor qué OpenID quiere usar con su servicio! – stefanw

+0

Pero si uso la entrada de la fuente del usuario como índice , tal vez las URL como http://openid.yahoo/username/, https://openid.yahoo/username/, http://openid.yahoo/username, http://openid.yahoo/username?blabla es el mismo proceso en el OP, pero no en mi DB así que debería usar alguna referencia del servidor, para intentar dejarlo con una pequeña posibilidad de errores gracias por la respuesta – mozlima

7

Utilice el parámetro openid.claimed_id como la clave primaria lógica para los usuarios. Trátelo como case sensitive, y use valor entero. Do not recortar el fragmento o el esquema (protocolo). Trate los protocolos "http: //" y "https: //" como completamente diferentes, incluso si el resto de la URL es el mismo. En resumen, trate el openid.claimed_id como un valor opaco que debe almacenarse por completo para los usuarios nuevos y debe coincidir completamente con los usuarios recurrentes.

El explica más a fondo, pero la respuesta corta es anterior.

+1

Por cierto, no he oído hablar de Dope OpenId antes, pero hay algunas opciones para bibliotecas PHP OpenID. Sugiero antes de que te concentres en usar Dope OpenID, ejecuta las pruebas RP en http://test-id.org/ para asegurarte de que sea una implementación segura de OpenID. Si no es así, le sugiero que pruebe la biblioteca PHP de Janrain en http://www.openidenabled.com/, que espero supere las pruebas. –

+0

¿Cómo va a manejar esto OpenIDs delegados? Cuando ingreso mydomain.com que delega en name.myopenid.com, ¿es claim_id = mydomain.com? Si el consumidor guarda el OpenID delegado (name.myopenid.com), todo el sentido de delegación se desperdicia. – stefanw

+0

Tiene razón. En el caso de la delegación de mydomain.com a name.myopenid.com, openid.claimed_id es mydomain.com, lo que permite que OP delegado cambie manteniendo la identidad del usuario, ya que openid.claimed_id no cambia. –

Cuestiones relacionadas