クライアント テスト アプリとサーバー アプリがあり、どちらも GAE でホストされています。クライアントは単純な Web フロント エンドであり、サーバーは Oauth によって保護されたリソースをホストします。認証は OpenId を介して行われ、アプリケーションは Federated Login をサポートします。問題は、ユーザーがログインした後、userService がユーザーが誰であるかを忘れているように見えることです (ブラウザーには ACSID Cookie があるため、覚えています)。
(GAE ログからの) フローは次のとおりです。ユーザーはまず、cktestclient.appspot.com (クライアント アプリ) をブラウザーに入力し、ShowMyCommitments ボタンを押します。次に、サーバー側のログ (commitkeeperapi.appspot.com) に次のように表示されます。
9:10:22 AM: /oauth/authorize?response_type=code&client_id=webappclient&redirect_uri= http://cktestclient.appspot.com/client/showStartPage&scope=CommitKeeper_Access まだログインしていないため、リダイレクトされます 9:10: 22 AM: /login/?continue= http://commitkeeperapi.appspot.com/oauth/authorize?response_type=code&client_id=webappclient&redirect_uri=http://cktestclient.appspot.com/client/showStartPage&scope=CommitKeeper_Access 次に、URL を使用してログインします。 createLoginURL によって生成された
9:10:33 AM: /oauth/authorize?response_type=code&client_id=webappclient&redirect_uri= http://cktestclient.appspot.com/client/showStartPage&scope=CommitKeeper_Access OAuth ダンスが続き、ユーザー com.fourspires がログインしていることがわかります。 api.server.MyGaeAuthenticator 認証: 現在のユーザー (userService から): richardlandis@gmail.com
9:10:34 AM: /oauth/access_token さらに Oauth ダンシング... oAuthToken を取得し、cktestclient.appspot.com:/client/showStartPage でクライアントに戻ります - commitkeeperapi.appspot.com:/v3 で呼び出しを続けます/コミットメント
9:10:34 AM: /oauth/validate Dancing... コミットメントのリクエストで送信された oAuthToken を検証しています
9:10:36 AM: /v3/commitments/?oauth_token=9491caca6c9ad2b2cb2d20a5cf2773ce22b99e076ff0dcb3a47d06e6a26038d5ccf63c66f1f2387e サーバー コードに戻って、ユーザーを確認すると、null です。
com.fourspires.api.util.UserHelpers getCurrentUser: UserServiceFactory.getUserService().getCurrentUser() = null
この問題に関するすべてのスレッドを確認した結果、サーバーの appengine-web.xml に true を追加しましたが、何も変わりませんでした。
UserService がユーザーの追跡を失った理由を知っている人はいますか? この問題の回避策はありますが、これが失敗する理由についてもっと知りたいと思っていました。
PS - これはGWT および AppEngine User Service と非常に似ているようですが、解決されていないようです。