2013-02-17 9 views
5

Google認証システムでログインしている私の会社のための内部Webアプリケーションがあります。大部分はうまくいき、Googleで認証したり、アプリの基本的なユーザーの詳細にアクセスするための同意を得たり、アプリに返されたときにユーザーの詳細を取得することができます。Googleとのログインは常にユーザーの同意を求めます

問題は、一度彼らが同意すると、毎回それをする必要がないと思ったことです。これは間違った前提ですか?今のように、「googleでログイン」をクリックするたびに、アプリにリダイレクトされるのではなく、同意する必要があります。

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

答えて

15

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

ただし、一部の状況では、自動承認が無効になる可能性がありますログインごとにユーザーの同意が必要です。

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

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

+0

ありがとうございました。第三者のlibに潜入すると、approval_prompt = forceが明示的に追加されました。私が読んだドキュメントではそれを見つけられませんでしたが、それを削除することで本当に問題は解決しました。魅力のように働く、ありがとう! – Greg

関連する問題