7

Google認証システムでログインを使用する会社の内部Webアプリがあります。ほとんどの場合うまく機能しており、Googleで認証し、アプリが基本的なユーザーの詳細にアクセスすることに同意します。その後、アプリに戻ったときに、実際にユーザーの詳細を取得できます。

問題は、彼らが同意すれば、毎回それをする必要はないだろうと私が思ったということです。これは間違った仮定ですか?現在のように、「Googleでログイン」をクリックするたびに、私のアプリにリダイレクトされるのではなく、同意する必要があります。

私はPHP(codeigniter)とgithub(phil sturgeonのライブラリのフォーク)にあるかなり良いOauthlibを使用しています。ユーザーが最初から毎回同意する必要がないように、渡す必要のあるパラメーターはありますか?

4

1 に答える 1

18

Googleログインは、毎回ユーザーの同意を必要としません。OAuth2ログイン手順を使用している場合は、再承認なしで2回目のログインができるはずです:https ://developers.google.com/accounts/docs/OAuth2Login

ただし、状況によっては、自動承認が無効になり、その後、ログインごとにユーザーの同意が必要になる場合があります。

最初の最も一般的なケースは、アプリケーションがGoogleに毎回同意を求めるように明示的に要求する場合です。承認リクエスト(例またはサンプルコードからコピーした可能性があります)に「prompt=consent」または古い非標準形式の「approval_prompt=force」が含まれているかどうかを確認します。これらのパラメーター(存在する場合)を削除すると、自動承認が機能し始める可能性があります。

別の状況は、リダイレクトURLが「localhost」またはグローバルDNS名前空間に属していない他のURLに基​​づいている場合です。この場合、セキュリティ上の理由から、Googleはaccounts.google.comドメインのユーザーのコンピューターにCookieを設定して、ユーザーがローカルホスト(またはローカルドメイン)の「foo」にログインすることを_this_device_に許可したことを通知します。Googleは、Cookieが見つかった場合にのみ、2番目のリクエストに同意せずに自動承認します。その理由は、「localhost」(またはローカルドメイン、またはグローバルDNS名前空間に構築されていない他のURL)の意味はデバイスに依存し、承認をデバイス全体に適用できるようにすると、セキュリティリスクが発生する可能性があるためです。したがって、会社が終了時にすべてのCookieをクリアするようにブラウザを構成している場合非絶対URLを使用すると、ユーザーが毎回同意する必要があることがわかります。解決策は、インターネットで有効なホスト名でエンドポイントをホストするか(ホストはイントラネットの外部からアクセス可能である必要はなく、ホスト名のみがグローバルに有効である必要があります)、またはaccounts.google.comを免除する必要があります。クッキークリアポリシー。

于 2013-02-18T04:09:01.987 に答える