gpt4 book ai didi

ssl - DotNetOpenAuth RP 在 SSL 设备后面失败

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:23 26 4
gpt4 key购买 nike

我无法让 DNOA RP 在 SSL 设备后面工作(终止客户端 HTTPS 连接并将 HTTP 反向代理到它后面的网络服务器)。

问题是 RP 错误地从传入请求中猜测接收端点(因为它到达网络服务器时不是 HTTPS)并将端点与 return_to url 上的方案进行比较( HTTPS)- 它失败并显示下面的堆栈跟踪。我已经在代码中探索了一下,但我没有看到在没有自定义构建或非平凡子类的情况下更改此行为的方法。我已经将 Realm 和 ReturnToUrl 的 HTTPS 版本传递给 OpenIdRelyingParty.CreateRequests() - 这部分工作正常。

是否可以将检测到的收件人方案伪造为 HTTPS 或跳过库存 DNOA 版本上的方案比较,或者我明天要修补自定义版本?


堆栈跟踪:

ERROR DotNetOpenAuth.Messaging - 09 Jul 2010 00:11:39,450 - Protocol error: The openid.return_to parameter (https://XXX/Login.aspx?openid=XXX&dnoa.userSuppliedIdentifier=XXX) does not match the actual URL (http://XXX/Login.aspx?openid=XXX&dnoa.userSuppliedIdentifier=XXX&openid.ns=http://specs.openid.net/auth/2.0&openid.mode=id_res&openid.op_endpoint=XXX&openid.response_nonce=XXX&openid.return_to=https://XXX/Login.aspx?openid=XXX&dnoa.userSuppliedIdentifier=XXX&openid.assoc_handle=XXX&openid.signed=op_endpoint,claimed_id,identity,return_to,response_nonce,assoc_handle&openid.sig=XXX&openid.identity=XXX&openid.claimed_id=XXX) the request was made with.
at DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol(Boolean condition, String message, Object[] args)
at DotNetOpenAuth.OpenId.Messages.IndirectSignedResponse.VerifyReturnToMatchesRecipient()
at DotNetOpenAuth.OpenId.Messages.IndirectSignedResponse.EnsureValidMessage()
at DotNetOpenAuth.Messaging.MessageSerializer.Deserialize(IDictionary`2 fields, MessageDictionary messageDictionary)
at DotNetOpenAuth.Messaging.Reflection.MessageDictionary.Deserialize(IDictionary`2 fields)
at DotNetOpenAuth.Messaging.Channel.Receive(Dictionary`2 fields, MessageReceivingEndpoint recipient)
at DotNetOpenAuth.Messaging.Channel.ReadFromRequestCore(HttpRequestInfo request)
at DotNetOpenAuth.Messaging.Channel.ReadFromRequest(HttpRequestInfo httpRequest)
at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.GetResponse(HttpRequestInfo httpRequestInfo)
at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.GetResponse()

最佳答案

当 DotNetOpenAuth 将这些特殊的 HTTP header 添加到转发的 HTTP 请求时,它们内置了对 SSL 设备的支持:X_FORWARDED_PROTO 和/或 HTTP_HOST。当这些存在时,对外 URL 的自动检测是正确的。如果您可以配置 SSL 设备来执行此操作,那可能是最佳选择。

替代方法是调用 OpenIdRelyingParty.GetResponse(HttpRequestInfo) 而不是不带参数的重载。您可以使用您知道的真实网址自行构建 HttpRequestInfo。然后 DotNetOpenAuth 中的 URL 匹配逻辑不会使请求失败。

关于ssl - DotNetOpenAuth RP 在 SSL 设备后面失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3209169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com