我在本地运行DotNetopenAuth示例提供程序,它似乎通过Web浏览器正确处理请求.我可以在调试器中单步执行处理程序以进行授权.
我有一个项目可以与谷歌和其他提供商进行身份验证,但与样本提供商失败.样本提供程序根本看不到请求,依赖方抛出异常,抱怨找不到OpenID端点.
假设我在依赖方中执行以下操作:
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... } }
我注意到UntrustedWebRequestHandler类阻止了与诸如localhost之类的主机名的连接,但是根据测试用例或手动将其添加为列入白名单的主机似乎没有帮助.
我检查过主机是否可以通过以下方式访问:
// 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();
思考?我知道为什么它根本就没有提出要求.
编辑:localhost被列入白名单:
(openid.Channel.WebRequestHandler as UntrustedWebRequestHandler).WhitelistHosts.Add("localhost");
我也尝试通过将其添加到web.config来将其列入白名单,如下所示:
<dotNetopenAuth> <messaging> <untrustedWebRequest> <whitelistHosts> <add name="localhost"/> </whitelistHosts> </untrustedWebRequest> </messaging> </dotNetopenAuth>
使用这两种方法,localhost在调试器中检查时显示在UntrustedWebRequestHandler的列入白名单的主机列表中.他们的提供者仍然没有收到任何请求.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。