Google は、ユーザーがログインして、Google アカウント データをサードパーティ アプリケーションと共有できる安全な方法を提供するため、常に努力しています。その理念に基づき、OAuth インタラクション中のフィッシングやアプリのなりすましによる攻撃に対する一連の保護機能をロールアウトします。
Google のログインと認可のフローは、Google OAuth プラットフォーム を利用しています。アプリ デベロッパーがサポート対象の OAuth フローを組み込めるように、ここ数年の間にたくさんの方法を開発し、サポートしています。今回は、オンラインのユーザーの安全を維持するという目的のもと、2 つのレガシーフローのサポートを終了します。デベロッパーの皆さんは、保護が強化されている別の実装方式に移行する必要があります。
スムーズな移行を実現し、サービスの中断が起きないようにするため、十分な実装の時間を提供します。以下の期日に間に合うように移行をお願いいたします。このロールアウトについては、メールでさらに最新情報をお知らせする予定です。Google API コンソール のプロジェクト設定で、サポート メールアドレスが最新になっていることをご確認ください。
ループバック IP アドレス フローは、中間者 攻撃に脆弱です。この攻撃が行われると、悪意のあるアプリが一部のオペレーティング システムで同じループバック インターフェースにアクセスし、OAuth レスポンスを傍受して 認可コードを入手できる可能性があります。そこで、iOS、Android、Chrome アプリの OAuth クライアント タイプでこのフローを禁止することにより、この脅威ベクターを取り除きます。既存のクライアントは、安全性が高い実装方式 に移行できます。2022 年 3 月 14 日 以降、新規クライアントはこのフローを使えなくなります。
アプリでループバック IP アドレスフローを使っているかどうかを確認する
アプリのコードか、外向きのネットワーク呼び出し(アプリで OAuth ライブラリを使っている場合)を調べ、アプリで行っている Google OAuth 認可リクエスト の “redirect_uri” パラメータに次の値が含まれているかどうかを確認してください。
redirect_uri=http://127.0.0.1:port または http://[::1]:port">http://[::1]:port または
http://localhost:port
別のフローへの移行
アプリでループバック IP アドレス方式を使っている場合は、デフォルトで安全性が高い別の方式に移行する必要があります。移行する別の方式として、以下を検討してください。
2022 年 3 月 14 日 - 新規の OAuth 利用で、ループバック IP アドレスフローがブロックされます。
2022 年 8 月 1 日 - 期日の 1 か月前より、非準拠 OAuth リクエストを使うと、ユーザーに警告メッセージが表示される場合があります。
2022 年 8 月 31 日 - 既存クライアントに対して、ループバック IP アドレスフローがブロックされます。
OAuth のアウトオブバンド (OOB)は、レガシーフローです。ウェブアプリの場合、ユーザーが OAuth 同意リクエストを承認した後、リダイレクト URI で資格情報を受け取ることができます。このフローは、リダイレクト URI を持たないネイティブ クライアントをサポートするために開発されました。OOB フローにはリモート フィッシングのリスクがあるので、クライアントはこの脆弱性に対する保護策として、別の方式に移行する必要があります。2022 年 2 月 28 日 以降、新規クライアントはこのフローを使えなくなります。
アプリで OOB フローを使っているかどうかを確認する
アプリのコードか、外向きのネットワーク呼び出し(アプリで OAuth ライブラリを使っている場合)を調べ、アプリで行っている Google OAuth 認可リクエスト の “redirect_uri” パラメータに次の値が含まれているかどうかを確認してください。
redirect_uri=urn:ietf:wg:oauth:2.0:oob または urn:ietf:wg:oauth:2.0:oob:auto または oob
別のフローへの移行
アプリで OOB 方式を使っている場合は、デフォルトで安全性が高い別の方式に移行する必要があります。移行する別の方式として、以下を検討してください。
2022 年 2 月 28 日 - 新規の OAuth 利用で、OOB フローがブロックされます。
2022 年 9 月 5 日 - 非準拠 OAuth リクエストを使うと、ユーザーに警告メッセージが表示される場合があります。
2022 年 10 月 3 日 - 既存クライアントで OOB フローが非推奨となります。
前述の OAuth 方式がブロックされる 1 か月前から、非準拠リクエストを使うユーザーに対して警告メッセージが表示される場合があります。このメッセージは、近日中にアプリがブロックされる可能性があることをユーザーに伝えるものになります。Google API Console の OAuth 同意画面 で登録されたサポートメールも表示されます。
【ユーザーに表示される警告の例】
デベロッパーは、ユーザーに表示される警告メッセージを確認したうえで、認可呼び出しの際に次のようにしてクエリ パラメータを渡すことで、メッセージを抑制することができます。
Google の OAuth 2.0 認可エンドポイント にリクエストを送るアプリのコードを開きます。
期日を値としたパラメータを追加します。
OOB の場合 : ack_oob_shutdown
パラメータを追加し、値として期日 2022-10-03 を指定します。例 : ack_oob_shutdown=2022-10-03
ループバック IP アドレスの場合 : ack_loopback_shutdown
パラメータを追加し、値として期日 2022-08-31 を指定します。例 : ack_loopback_shutdown=2022-08-31
期日までに基準を満たすようにアップデートされないアプリでは、認可リクエストがブロックされ、無効なリクエストを示すエラー画面がユーザーに表示される場合があります(次に例を示します)。
【ユーザーに表示されるエラーの例】
Reviewed by
Eiji Kitamura - Developer Relations Team
この記事は Google、プロダクト マネージャー、Vikrant Rana、グループ プロダクト マネージャー、Badi Azad による Google Developers Blog の記事 "Making Google OAuth interactions safer by using more secure OAuth flows " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Google は、ユーザーがログインして、Google アカウント データをサードパーティ アプリケーションと共有できる安全な方法を提供するため、常に努力しています。その理念に基づき、OAuth インタラクション中のフィッシングやアプリのなりすましによる攻撃に対する一連の保護機能をロールアウトします。
Google のログインと認可のフローは、Google OAuth プラットフォーム を利用しています。アプリ デベロッパーがサポート対象の OAuth フローを組み込めるように、ここ数年の間にたくさんの方法を開発し、サポートしています。今回は、オンラインのユーザーの安全を維持するという目的のもと、2 つのレガシーフローのサポートを終了します。デベロッパーの皆さんは、保護が強化されている別の実装方式に移行する必要があります。
スムーズな移行を実現し、サービスの中断が起きないようにするため、十分な実装の時間を提供します。以下の期日に間に合うように移行をお願いいたします。このロールアウトについては、メールでさらに最新情報をお知らせする予定です。Google API コンソール のプロジェクト設定で、サポート メールアドレスが最新になっていることをご確認ください。
ループバック IP アドレス フローは、中間者 攻撃に脆弱です。この攻撃が行われると、悪意のあるアプリが一部のオペレーティング システムで同じループバック インターフェースにアクセスし、OAuth レスポンスを傍受して 認可コードを入手できる可能性があります。そこで、iOS、Android、Chrome アプリの OAuth クライアント タイプでこのフローを禁止することにより、この脅威ベクターを取り除きます。既存のクライアントは、安全性が高い実装方式 に移行できます。2022 年 3 月 14 日 以降、新規クライアントはこのフローを使えなくなります。
アプリでループバック IP アドレスフローを使っているかどうかを確認する
アプリのコードか、外向きのネットワーク呼び出し(アプリで OAuth ライブラリを使っている場合)を調べ、アプリで行っている Google OAuth 認可リクエスト の “redirect_uri” パラメータに次の値が含まれているかどうかを確認してください。
redirect_uri=http://127.0.0.1:port または http://[::1]:port">http://[::1]:port または
http://localhost:port
別のフローへの移行
アプリでループバック IP アドレス方式を使っている場合は、デフォルトで安全性が高い別の方式に移行する必要があります。移行する別の方式として、以下を検討してください。
2022 年 3 月 14 日 - 新規の OAuth 利用で、ループバック IP アドレスフローがブロックされます。
2022 年 8 月 1 日 - 期日の 1 か月前より、非準拠 OAuth リクエストを使うと、ユーザーに警告メッセージが表示される場合があります。
2022 年 8 月 31 日 - 既存クライアントに対して、ループバック IP アドレスフローがブロックされます。
OAuth のアウトオブバンド (OOB)は、レガシーフローです。ウェブアプリの場合、ユーザーが OAuth 同意リクエストを承認した後、リダイレクト URI で資格情報を受け取ることができます。このフローは、リダイレクト URI を持たないネイティブ クライアントをサポートするために開発されました。OOB フローにはリモート フィッシングのリスクがあるので、クライアントはこの脆弱性に対する保護策として、別の方式に移行する必要があります。2022 年 2 月 28 日 以降、新規クライアントはこのフローを使えなくなります。
アプリで OOB フローを使っているかどうかを確認する
アプリのコードか、外向きのネットワーク呼び出し(アプリで OAuth ライブラリを使っている場合)を調べ、アプリで行っている Google OAuth 認可リクエスト の “redirect_uri” パラメータに次の値が含まれているかどうかを確認してください。
redirect_uri=urn:ietf:wg:oauth:2.0:oob または urn:ietf:wg:oauth:2.0:oob:auto または oob
別のフローへの移行
アプリで OOB 方式を使っている場合は、デフォルトで安全性が高い別の方式に移行する必要があります。移行する別の方式として、以下を検討してください。
2022 年 2 月 28 日 - 新規の OAuth 利用で、OOB フローがブロックされます。
2022 年 9 月 5 日 - 非準拠 OAuth リクエストを使うと、ユーザーに警告メッセージが表示される場合があります。
2022 年 10 月 3 日 - 既存クライアントで OOB フローが非推奨となります。
前述の OAuth 方式がブロックされる 1 か月前から、非準拠リクエストを使うユーザーに対して警告メッセージが表示される場合があります。このメッセージは、近日中にアプリがブロックされる可能性があることをユーザーに伝えるものになります。Google API Console の OAuth 同意画面 で登録されたサポートメールも表示されます。
【ユーザーに表示される警告の例】
デベロッパーは、ユーザーに表示される警告メッセージを確認したうえで、認可呼び出しの際に次のようにしてクエリ パラメータを渡すことで、メッセージを抑制することができます。
Google の OAuth 2.0 認可エンドポイント にリクエストを送るアプリのコードを開きます。
期日を値としたパラメータを追加します。
OOB の場合 : ack_oob_shutdown
パラメータを追加し、値として期日 2022-10-03 を指定します。例 : ack_oob_shutdown=2022-10-03
ループバック IP アドレスの場合 : ack_loopback_shutdown
パラメータを追加し、値として期日 2022-08-31 を指定します。例 : ack_loopback_shutdown=2022-08-31
期日までに基準を満たすようにアップデートされないアプリでは、認可リクエストがブロックされ、無効なリクエストを示すエラー画面がユーザーに表示される場合があります(次に例を示します)。
【ユーザーに表示されるエラーの例】
Reviewed by Eiji Kitamura - Developer Relations Team