DotNetOpenAuth OpenID バージョン 3.4.1 を使用する ASP.NET MVC アプリケーションを、単一サーバーの Web ガーデンから、ハードウェア ロード バランサーの背後にある物理サーバー クラスターに移動しようとしています。
私たちの古いセットアップ (OpenID RP が動作):
ブラウザ => SHTTP => サーバー => WebGarden => ナンス/セッション ストア
新しいセットアップ (OpenID RP が機能しない):
Browser => SHTTP => Load Balancer => HTTP => Cluster Node => WebGarden => Nonce/Session Store DB
新しいセットアップで認証すると、OpenID プロバイダーに正しくリダイレクトされますが、認証後にクラスター (リレー パーティー) にリダイレクトされ、次の例外が発生します。
例外
DotNetOpenAuth.Messaging.ProtocolException: Redirects on POST requests that are to untrusted servers is not supported.
at DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol(Boolean condition, String message, Object[] args) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\ErrorUtilities.cs:line 235
at DotNetOpenAuth.Messaging.UntrustedWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\UntrustedWebRequestHandler.cs:line 258
at DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel.GetDirectResponse(HttpWebRequest webRequest) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\ChannelElements\OpenIdChannel.cs:line 277
at DotNetOpenAuth.Messaging.Channel.RequestCore(IDirectedProtocolMessage request) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\Channel.cs:line 542
at DotNetOpenAuth.Messaging.Channel.Request(IDirectedProtocolMessage requestMessage) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\Channel.cs:line 425
at DotNetOpenAuth.Messaging.Channel.Request[TResponse](IDirectedProtocolMessage requestMessage) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\Channel.cs:line 405
at DotNetOpenAuth.OpenId.ChannelElements.SigningBindingElement.ProcessIncomingMessage(IProtocolMessage message) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\ChannelElements\SigningBindingElement.cs:line 154
at DotNetOpenAuth.Messaging.Channel.ProcessIncomingMessage(IProtocolMessage message) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\Channel.cs:line 992
at DotNetOpenAuth.OpenId.ChannelElements.OpenIdChannel.ProcessIncomingMessage(IProtocolMessage message) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\ChannelElements\OpenIdChannel.cs:line 172
at DotNetOpenAuth.Messaging.Channel.ReadFromRequest(HttpRequestInfo httpRequest) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\Channel.cs:line 386
at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.GetResponse(HttpRequestInfo httpRequestInfo) in c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\RelyingParty\OpenIdRelyingParty.cs:line 501
関係するマシンを信頼できるマシン リストに追加し、オフにすると SSL が必要ですが、違いはありません。nonce ストアを削除してステートレス接続を使用することも試みましたが、それもうまくいきませんでした。常に同じエラーが発生します。
この問題は、クラスター ノードが OpenID プロバイダーに接続するときにロード バランサーとは異なる IP を持っているために発生しているのではないかと疑っていますが、確かではありません。
何か案は?
返信ありがとうございます。もう少し情報を提供させてください。
OPとRPの両方を社内に持っています。相互にあまり信頼していない組織が複数あるため、プロバイダーを各組織に配布し、属性交換を使用して、アクセスすることなくユーザーデータ (電子メールアドレス、個人番号など) を渡します。相互のデータ ストア (通常は LDAP) を直接。
ハードウェア ロード バランサーを介してクラスターに接続した場合ではなく、1 台のコンピューターで (たとえば、クラスター ノードに直接接続した場合) セットアップが正常に機能する理由は、私たちを困惑させます。
両端であらゆる種類の異なる構成を試しましたが、今のところうまくいきません。