.net – 使用DotNetOpenAuth的localhost上的OpenID提供程序

我在本地运行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的列入白名单的主机列表中.他们的提供者仍然没有收到任何请求.

解决方法

看起来您已经意识到需要将本地主机列入白名单以使其正常工作.但是我最近意识到的另一件事是IIS阻止ASP.NET Web应用程序自己执行HTTP GET.它适用于Visual Studio Personal Web Server,但如果您的RP和OP都托管在localhost下的IIS上,那么可能是它阻止了它的IIS.您可以通过使用IIS托管的RP与控制台应用程序中的手写HttpWebRequest测试来确认或拒绝此操作.

如果它们都在IIS下,那就是问题所在,那么您应该使用Personal Web Server进行开发,或者将IIS中的两个站点分离到不同的应用程序池中,或者这样做会有所帮助.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....