1

ユーザーをOAuth2.0ログインサーバーにリダイレクトし、ユーザーが正常にログインした後にコールバックURLに戻る単純なログインページを実装しようとしています。

しかし、私はエラーメッセージで例外を受け取り続けます:

予期された値と一致しないコールバックおよびクライアント状態で受信された予期しないOAuth許可応答。

デバッグから、「RequestUserAuthorization()」を呼び出す前と後のセッションIDが異なることに気付きました。

どういうわけかセッションの変更を防ぐ必要があるといういくつかのSOの回答から読みましたが、このシナリオでそれを達成する方法がわかりません。

助けていただければ幸いです、ありがとう!

私の蒸留された実装は次のとおりです。

private readonly WebServerClientCustomImpl _oauthClient = new WebServerClientCustomImpl();

public ActionResult Login()
        {    
            IAuthorizationState auth = null;

            auth = _oauthClient.ProcessUserAuthorization();

            if (auth == null)
            {
                _oauthClient.RequestUserAuthorization(returnTo: _redirectUrl);
            }
            else
            {
                // Save authentication information into cookie.
                HttpContext.Response.Cookies.Add(auth.CreateAuthCookie());

                return RedirectToAction("Index", "Home");
            }

            ViewBag.Message = "Future login page...";
            return View();
        }
4

2 に答える 2

1

ほとんどの場合、SessionIdの変更に問題がある場合は、このユーザーのSessionオブジェクトに何もないことを意味します。セッションに何かを追加するだけで、SessionIdはユーザーにとって同じままである必要があります。

Session["UserIsHere"] = true;
于 2013-01-09T00:31:31.500 に答える
0

私は同じメッセージを持っていましたが、異なる問題がありました。

私がグーグルoauthパネルに登録したURL(オリジンとリダイレクト)はwwwで始まりました。

wwwなしでWebにアクセスし、エラーメッセージが表示されたユーザーもいます。

ieGoogle cpanel conf:http:// www.somesite.com、http://www.somesite.com/oauth2にリダイレクト

一部のユーザーはhttp://somesite.comにアクセスします。

解決策:ユーザーがwwwバージョンのみを使用するか、ネイキッドドメインをwwwにリダイレクトするように制限します。これにより、認証要求は常にOauthパネルに登録されたドメインから送信されます。

それが役に立てば幸い!

于 2014-01-13T18:14:32.387 に答える