0

私はこのチュートリアルを使用しています: http://www.dotnetopenauth.net/developers/help/programmatic-openid-relying-party/

私の GetResponse() 呼び出しは常に null を返します。また、web.config のホワイト リストに localhost を追加しました。すべてを正しく行ったように感じますが、オンラインで解決策を見つけることができません。openid オブジェクトを見るとデバッグ中です。私は2つの発見サービスを数えています..

JS クリックから以下のメソッドを呼び出します。

[HttpPost]
        public void PingOpenID()
        {
            var openid = new OpenIdRelyingParty();
            IAuthenticationResponse response = openid.GetResponse();

            if (response != null)
            {
                switch (response.Status)
                {
                    case AuthenticationStatus.Authenticated:
                        FormsAuthentication.RedirectFromLoginPage(
                            response.ClaimedIdentifier, false);
                        break;
                    case AuthenticationStatus.Canceled:
                        ModelState.AddModelError("loginIdentifier",
                            "Login was cancelled at the provider");
                        break;
                    case AuthenticationStatus.Failed:
                        ModelState.AddModelError("loginIdentifier",
                            "Login failed using the provided OpenID identifier");
                        break;
                }
            }
        }
4

1 に答える 1

1

あなたの質問は、「JS クリック」からこのメソッドを呼び出していると述べました。それは OpenID の仕組みではありません。OpenID 応答メッセージは、ブラウザーで実行されている一部の JS ではなく 、 RPへのリダイレクトを介してプロバイダーから送信されます。JS が空の POST を RP に送信しており、OpenID ペイロードが含まれていないため、null が返される可能性があります。 GetResponse()

ブラウザーの RP の JavaScript が OpenID 応答を RP サーバーに「転送」する特殊なケースがいくつかあることに注意してください。

于 2012-08-23T13:52:19.217 に答える