🏠 ホーム
フロントエンド
PHP
Go言語
プログラミングの理解
プログラマーへの道
Google API

【事例】Google OAuth 連携が突然動かなくなった話(RS256・branding 表示崩れ)

  プログラミング >     Go言語 >  

1. 突然のエラー

ある日、Googleログインを試したところ、こんなエラーが表示されました。

Unexpected signing method: RS256

これまで問題なく動いていたコードが、特にデプロイや設定変更をしていないのに動かなくなったのです。
しかも、OAuth同意画面の表示もおかしくなり、設定したブランド名やロゴが表示されず、ドメイン名だけになってしまいました。


2. まずは原因調査

(1) Signing Methodの仕様変更?

エラーの文面から、JWT署名アルゴリズムの検証部分で RS256 を拒否している可能性が高いと推測。
Google の OIDC 仕様上、RS256 は標準的に使われていますが、コードが HS256 前提で検証していた場合、このエラーになります。

(2) ライブラリの変化

使っていた Go の OAuth 実装部分で、Google 側からの JWT 検証に JWK(JSON Web Key)を取得する必要が出てきていることが判明。
新しいバージョンでは jwk.FetchHTTP などを使う実装が推奨されており、古いコードでは非対応のケースがあります。


3. 対応策

(1) JWT 検証ロジック修正

Go 側のコードを修正し、Google の JWK エンドポイント(https://www.googleapis.com/oauth2/v3/certs)から公開鍵を取得して署名検証する形に変更。
ライブラリも最新化して、RS256を正しく受け付けるようにしました。

(2) Docker イメージ更新

利用中の golang:1.20.2 イメージでは一部のモジュールが古かったため、ビルド環境を更新。
必要に応じて docker-compose build --no-cachedocker restart を実行して反映。


4. OAuth 同意画面のブランド名が出ない問題

原因は Google の OAuth consent screen UI 更新 によるものでした。
2024年末〜2025年初めにかけて、Google は OAuth 同意画面を簡素化し、アプリ名やロゴを目立たせる仕様から、よりセキュリティ重視の表示(発行元ドメイン名中心)に移行しました。

特に 「内部向け」や「未公開バージョン」 の場合は、ユーザーにはブランド名ではなく発行元ドメインのみが表示されるようになっています。


5. なぜメール通知がなかったのか?

Google は OAuth の仕様変更や UI 改修を、必ずしも個別メールで通知していません。
多くの場合は Google Cloud Release Notes開発者ブログGoogle Identity Platform の更新履歴 にのみ掲載されます。
対象が「セキュリティ仕様変更」や「段階的ロールアウト」の場合、開発者全員へのメール通知は省略される傾向があります。


6. 教訓


📌 参考リンク

 

登録日:

更新日:

by

コメント         tweetでコメント