运行OpenID提供商时,我们有我们使用DotNetOpenAuth组件创建OpenID提供者。当我们在单个节点上运行提供程序时,一切都很顺利,但是当我们将提供程序移动到负载均衡的集群,其中多个服务器正在处理每个会话的请求时,由于DotNetOpenAuth组件似乎使用的是独特的从每个集群节点创建签名。
异常
DotNetOpenAuth.Messaging.Bindings.InvalidSignatureException: Message signature was incorrect.
at DotNetOpenAuth.OpenId.ChannelElements.SigningBindingElement.ProcessIncomingMessage(IProtocolMessage message) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\OpenId\ChannelElements\SigningBindingElement.cs:line 139
at DotNetOpenAuth.Messaging.Channel.ProcessIncomingMessage(IProtocolMessage message) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\Messaging\Channel.cs:line 940
at DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel.ProcessIncomingMessage(IProtocolMessage message) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\OpenId\ChannelElements\OpenIdChannel.cs:line 172
at DotNetOpenAuth.Messaging.Channel.ReadFromRequest(HttpRequestInfo httpRequest) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\Messaging\Channel.cs:line 378
at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.GetResponse(HttpRequestInfo httpRequestInfo) in c:\BuildAgent\work\7ab20c0d948e028f\src\DotNetOpenAuth\OpenId\RelyingParty\OpenIdRelyingParty.cs:line 493
设置
我们有机器的配置设置为使用所有群集节点上的同一台机器的关键,我们必须建立一个进程外会话与SQL Server。
问题
我们如何配置使用DotNetOpenAuth签署的消息,因此客户端将在同一会话期间信任来自集群中的所有服务器的响应的关键?
我认为我们有同样的问题:http://stackoverflow.com/questions/2505565/dotnetopenauth-message-signature-was-incorrect – 2010-03-24 18:47:40
我们有一个类似的问题,而是选择创建一个nonce商店,这非常漂亮简单并且在我们的农场/花园设置上运行得非常好。但我们现在面临的问题是我们自己的提供商,我们正试图迁移到农场,而不是RP。 – Garth 2010-03-25 07:13:55