Question

Je me cogne la tête contre un mur pour essayer d'obtenir AttributeExchange ou SimpleRegistration fonctionnant avec le version 3.2.0.9257 de DotNetOpenAuth .

Voici ce que j'ai fait:

  1. Téléchargé la balise 3.2.0.9257 depuis GitHub
  2. Ouverture de la solution de studio visuel DotNetOpenAuth
  3. Modifications apportées à l'exemple OpenIdRelyingPartyMvc

Toutes les modifications sont dans la méthode d'authentification de UserController.

J'ai remplacé la ligne 44,

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

avec ce qui suit:

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();

(J'ai également ajouté les espaces de noms DotNetOpenAuth.OpenId.Extensions.AttributeExchange et DotNetOpenAuth.OpenId.Extensions.SimpleRegistration.)

Puis, plus loin dans la même méthode, après le "Stage 3 Authenticated", j'essaie d'obtenir les réponses:

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

Cependant, ces réponses sont toujours nulles. J'ai essayé Google, Yahoo et MyOpenID. Dans tous les cas, l'authentification fonctionne correctement, mais aucune donnée SimpleRegistration ou AttributeExchange n'est renvoyée.

Qu'est-ce que je fais de travers?

Était-ce utile?

La solution

Google ne prend pas en charge sreg et sa prise en charge d'AX est réservée aux adresses électroniques, et uniquement si vous indiquez que l'adresse e-mail est "obligatoire" et "obligatoire". (votre code utilise la valeur par défaut "facultatif").

Yahoo ne supporte pas AX, et son support sreg est uniquement un RP en liste blanche.

MyOpenID prend en charge sreg et une variété d’AX différente de celle utilisée par DotNetOpenAuth par défaut. Êtes-vous sûr que ClaimsResponse est null lorsqu'il est utilisé contre MyOpenID? Parce que dans mes tests , cela fonctionne correctement.

Vous pouvez éviter d'envoyer des demandes AX sreg et , ainsi que les 3 variantes de AX, en utilisant simplement le comportement AXFetchAsSregTransform décrit sous Obtention des attributs d'utilisateur de la documentation DotNetOpenAuth.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top