Pregunta

Estoy golpeando mi cabeza contra una pared tratando de obtener AttributeExchange o SimpleRegistration trabajando con el versión 3.2.0.9257 de DotNetOpenAuth .

Esto es lo que he hecho:

  1. Descargó la etiqueta 3.2.0.9257 de GitHub
  2. Abrió la solución de estudio visual DotNetOpenAuth
  3. Se realizaron cambios en la muestra OpenIdRelyingPartyMvc

Todos los cambios están en el método Autenticar de UserController.

Reemplacé la línea 44,

return openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult();

con lo siguiente:

var request = openid.CreateRequest(Request.Form["openid_identifier"]);

// Add SimpleRegistration requests for Email and FullName
var sr = new ClaimsRequest();
sr.Email = DemandLevel.Request;
sr.FullName = DemandLevel.Request;
request.AddExtension(sr);

// Add AttributeExchange requests for Email and FullName
var ax = new FetchRequest();
ax.Attributes.Add(new AttributeRequest(WellKnownAttributes.Contact.Email));
ax.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.FullName));
request.AddExtension(ax);

return request.RedirectingResponse.AsActionResult();

(También agregué los espacios de nombres DotNetOpenAuth.OpenId.Extensions.AttributeExchange y DotNetOpenAuth.OpenId.Extensions.SimpleRegistration).

Luego, más abajo en el mismo método, después de la "Etapa 3 autenticada", trato de obtener las respuestas:

var sr = response.GetExtension<ClaimsResponse>();
var ax = response.GetExtension<FetchResponse>();

Sin embargo, esas respuestas son siempre nulas. He intentado con Google, Yahoo y MyOpenID. En todos los casos, la autenticación funciona correctamente, pero no se devuelven datos de SimpleRegistration o AttributeExchange.

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Google no admite sreg, y su compatibilidad con AX es solo de dirección de correo electrónico, y solo si marca la dirección de correo electrónico como "obligatoria". (su código usa el valor predeterminado "opcional").

Yahoo no es compatible con AX, y su soporte sreg es solo un RP en la lista blanca.

MyOpenID admite sreg, y una variedad diferente de AX que DotNetOpenAuth utiliza de forma predeterminada. ¿Está seguro de que la respuesta de reclamos es nula cuando se usa contra MyOpenID? Porque en mis pruebas funciona bien.

Puede evitar tener que enviar solicitudes AX sreg y , y los 3 sabores diferentes de AX simplemente usando el comportamiento AXFetchAsSregTransform descrito en Obteniendo atributos de usuario de la documentación de DotNetOpenAuth.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top