Sto cercando di capire come ottenere le informazioni degli utenti dopo la convalida tramite l'id aperto. Non importa se fornisco un ClaimsRequest o FetchRequest ogni volta chiamoImpossibile ottenere attributi dalla risposta DotNetOpenId
response.GetExtension<ClaimsResponse>
//Or
response.GetExtension<FetchResponse>
//Or
response.GetUntrustedExtension<ClaimsResponse>
// OR
response.GetUntrustedExtension<FetchResponse>
ottengo sempre riferimento null. Sto aggiungendo le informazioni, proprio come in tutti gli esempi che ho visto in questo modo:
request.AddExtension(new ClaimsRequest{ Email = DemandLevel.Require });
// Or
var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
request.AddExtension(fetch);
Qualsiasi idea di cosa sto facendo male?
Aggiornamento
Aggiunta di informazioni di configurazione suggerita da Andrew mi ha fatto parte della strada. Sto finalmente ottenendo un reclamo di Claims con response.GetUntrustedExtension<ClaimsResponse>
tuttavia response.GetExtension<ClaimsResponse>
restituisce ancora null. Anche la risposta di ClaimsResponse non contiene in realtà nessuno dei dati che ho richiesto. Ecco la domanda:
var request = openId.CreateRequest(Request.Form["openid_identifier"]);
request.AddExtension(new ClaimsRequest
{
BirthDate = DemandLevel.Request,
Country = DemandLevel.Request,
Email = DemandLevel.Require,
FullName = DemandLevel.Request,
Gender = DemandLevel.Request,
Language = DemandLevel.Request,
Nickname = DemandLevel.Request,
PostalCode = DemandLevel.Request,
TimeZone = DemandLevel.Request
});
return request.RedirectingResponse.AsActionResult();
Ecco la mia configurazione
<uri>
<idn enabled="All"/>
<iriParsing enabled="true"/>
</uri>
<dotNetOpenAuth>
<openid maxAuthenticationTime="0:05">
<relyingParty>
<security
requireSsl="false"
minimumRequiredOpenIdVersion="V10"
minimumHashBitLength="160"
maximumHashBitLength="256"
requireDirectedIdentity="false"
requireAssociation="false"
rejectUnsolicitedAssertions="false"
rejectDelegatingIdentifiers="false"
ignoreUnsignedExtensions="false"
privateSecretMaximumAge="07:00:00" />
<behaviors>
<add type="DotNetOpenAuth.OpenId.Behaviors.AXFetchAsSregTransform, DotNetOpenAuth" />
</behaviors>
</relyingParty>
</openid>
<messaging>
<untrustedWebRequest>
<whitelistHosts>
<!-- since this is a sample, and will often be used with localhost -->
<add name="localhost" />
</whitelistHosts>
</untrustedWebRequest>
</messaging>
Io corro v3.2.0.9177
Puoi includere quale OP stai testando? –
La configurazione del comportamento farà sì che ClaimsResponse sia sempre presente, anche senza valori, proprio come dici tu. Sembra che il tuo codice sia corretto, e dal momento che myopenid supporta sia sreg che AXI, sono sorpreso che questo non funzioni per te. Vedrò se riesco a fare qualche altra indagine. –
Ho aggiunto un commento sul test contro myopenid.com in particolare per la mia risposta, poiché immagino che sia ciò contro cui stai andando incontro. Anche solo un suggerimento, il tag di sicurezza che hai aggiunto al tuo file web.config non è necessario se lo hai lasciato testualmente come era nella pagina wiki. Questi sono tutti i valori predefiniti.Le uniche modifiche sostanziali che vedo qui sono che hai aggiunto "localhost" come host autorizzato e il comportamento di cui abbiamo parlato. –