1. ホーム
  2. google-cloud-platform

[解決済み] Googleからの「OAuthクライアントが削除されました」というのは、鍵が無効ということですか?

2022-02-09 05:30:20

質問

のリーク値を追跡しようとしています。 GOOGLE_CLIENT_SECRETGOOGLE_CLIENT_ID . 私はこの基本的なflaskアプリを実行します。 こちら docker で localhost にリンクし、/etc/hosts を編集して "myserver.local.com" にマップし、ページにアクセスします。このアプリはGoogle OAuth 2.0による認証を試みます」という画面でログインをクリックすると、次のようなエラーが表示されます。

Authorization Error
Error 401: deleted_client
The OAuth client was deleted

削除後30日以内にプロジェクトを復元できる可能性を除けば、流出したキーは脅威にはならないと捉えてよいでしょうか。プロジェクト内には見当たらないので、自分で削除するわけにもいきません。

解決方法は?

クライアントIDには プロジェクト番号 . クライアントIDは、次のように構成される。

<PROJECT_NUMBER>-<RANDOM_STUFF>.apps.googleusercontent.com

プロジェクトへのアクセス権を持っている場合、資格情報のリストにアクセスするには、リンク先で https://console.cloud.google.com/apis/credentials?project=<PROJECT_NUMBER> .

そこで、クライアントIDが削除されているかどうかを確認し、削除されていない場合は、自分で削除してください。

また、プロジェクトが削除待ちかどうかを確認するには、このコマンドで同じプロジェクト番号を使用します(要 gcloud がインストールされ、適切に認証されていること)。

curl -H"Authorization: Bearer $(gcloud auth print-access-token)" -H'Accept: application/json' \
'https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectNumber%3A<PROJECT_NUMBER>'

の通りです。 API の定義によれば、もしレスポンスにフィールド "lifecycleState":"DELETE_REQUESTED" これは、そのプロジェクトが削除待ちであるが、まだ回復可能であることを意味します。

これらの手順はすべて、あなたが認証情報を使ってプロジェクトにアクセスできることが条件となります。もし、あなたがそのアクセス権を持っていないのであれば、誰か持っている人を探してください。そのプロジェクトが組織内にあった場合、組織レベルの権限を持つ人が、組織内のすべてのプロジェクトにアクセスできるはずです。

とはいえ、このエラーはクライアントが削除されたことを意味するようで、少なくとも削除時の警告メッセージによれば、削除されたクレデンシャルを回復する方法はないようです。

一番危険なのは、流出した認証情報にプロジェクト番号が含まれていることですが、プロジェクト番号だけを悪用するのはかなり難しいです。