【事例】Google OAuth 連携が突然動かなくなった話(RS256・branding 表示崩れ)
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-cache
や docker restart
を実行して反映。
4. OAuth 同意画面のブランド名が出ない問題
原因は Google の OAuth consent screen UI 更新 によるものでした。
2024年末〜2025年初めにかけて、Google は OAuth 同意画面を簡素化し、アプリ名やロゴを目立たせる仕様から、よりセキュリティ重視の表示(発行元ドメイン名中心)に移行しました。
特に 「内部向け」や「未公開バージョン」 の場合は、ユーザーにはブランド名ではなく発行元ドメインのみが表示されるようになっています。
5. なぜメール通知がなかったのか?
Google は OAuth の仕様変更や UI 改修を、必ずしも個別メールで通知していません。
多くの場合は Google Cloud Release Notes や 開発者ブログ、Google Identity Platform の更新履歴 にのみ掲載されます。
対象が「セキュリティ仕様変更」や「段階的ロールアウト」の場合、開発者全員へのメール通知は省略される傾向があります。
6. 教訓
-
Google OAuth や OIDC の仕様は突然変わることがある
-
公式の 「Google Cloud Release Notes」 をウォッチしておく
-
JWT 検証はアルゴリズムを固定せず、ヘッダーから動的に対応できる実装にしておく
-
OAuth consent screen のブランド表示は今後さらに制限される可能性がある
📌 参考リンク
登録日:
更新日: