Dostawca OpenID na localhost z DotNetOpenAuth
Mam przykładowego dostawcę DotNetOpenAuth działającego lokalnie i wydaje się, że poprawnie obsługuje żądania za pośrednictwem przeglądarki internetowej. Mogę przejść przez program obsługi w celu autoryzacji w debuggerze.
Mam projekt, który może uwierzytelniać się w Google i innych dostawcach, ale nie działa z dostawcą próbek. Przykładowy dostawca nigdy nie widzi żądania, a strona ufająca zgłasza skargęNo OpenID endpoint found.
Powiedz, że wykonuję następujące czynności na stronie ufającej:
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...
}
}
Zauważyłem, żeUntrustedWebRequestHandler
klasa zapobiega połączeniom z nazwami hostów, takimi jaklocalhost
ale dodanie go jako hosta na białej liście, jak w przypadku testów lub ręcznie, wydaje się nie pomagać.
Sprawdziłem, czy host jest osiągalny za pomocą następujących elementów:
// 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();
Myśli? Jestem na wyczerpaniu, dlaczego nigdy w ogóle nie prosi.
EDYTOWAĆ:localhost
był na białej liście:
(openid.Channel.WebRequestHandler as UntrustedWebRequestHandler).WhitelistHosts.Add("localhost");
Próbowałem również dodawać do białej listy, dodając ją doweb.config
w ten sposób:
<dotNetOpenAuth>
<messaging>
<untrustedWebRequest>
<whitelistHosts>
<add name="localhost"/>
</whitelistHosts>
</untrustedWebRequest>
</messaging>
</dotNetOpenAuth>
Korzystając z obu podejśćlocalhost
pojawia się wUntrustedWebRequestHandler
lista hostów na białej liście podczas sprawdzania w debuggerze. Ich dostawca nadal nie otrzymuje żadnych żądań.