L'exemple de fournisseur DotNetOpenAuth s'exécute localement et il semble gérer correctement les requêtes via le navigateur Web. Je peux parcourir le gestionnaire pour l'autorisation dans le débogueur.Fournisseur OpenID sur localhost avec DotNetOpenAuth
J'ai un projet qui peut s'authentifier avec Google et d'autres fournisseurs, mais échoue avec le fournisseur d'exemple. Le fournisseur de l'échantillon ne voit jamais une demande du tout et la partie qui invoque jette une exception se plaindre No OpenID endpoint found.
dire que je fais ce qui suit dans la partie utilisatrice:
string providerURL = "http://localhost/openid/provider";
// Now try the openid relying party...
var openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response == null)
{
Identifier id;
if (Identifier.TryParse(providerURL, out id))
{
// The following line throws the exception without ever making
// a request to the server.
var req = openid.CreateRequest(providerURL);
// Would redirect here...
}
}
J'ai remarqué que la UntrustedWebRequestHandler
classe empêcher les connexions à hostnames telles comme localhost
mais en l'ajoutant en tant qu'hôte sur liste blanche, selon les cas de test ou manuellement, ne semble pas aider.
J'ai vérifié l'hôte est accessible avec les éléments suivants:
// Check to make sure the provider URL is reachable.
// These requests are handled by the provider.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(providerURL);
HttpWebResponse httpRes = (HttpWebResponse)request.GetResponse();
pensées? Je suis à bout de savoir pourquoi il ne fait jamais une demande du tout.
EDIT: localhost
est la liste blanche comme ceci:
(openid.Channel.WebRequestHandler as UntrustedWebRequestHandler).WhitelistHosts.Add("localhost");
J'ai aussi essayé whitelisting en ajoutant à web.config
comme ceci:
<dotNetOpenAuth>
<messaging>
<untrustedWebRequest>
<whitelistHosts>
<add name="localhost"/>
</whitelistHosts>
</untrustedWebRequest>
</messaging>
</dotNetOpenAuth>
l'approche privilégiée, localhost
apparaît dans la UntrustedWebRequestHandler
Liste des hôtes de la liste blanche examinée dans le débogueur. Leur fournisseur ne reçoit toujours aucune demande.
Et était ce test manuel 'WebRequest.Create' que vous avez appelé depuis votre application Web ou une application de console? –