Studyplus Engineering Blog

スタディプラスの開発者が発信するブログ

RubyによるGoogleSSO IDトークンの検証

こんにちは、サーバーサイドグループエンジニアの芳賀です。

今回は、業務で関わる機会があったため、Rubyを使用してgoogleauthライブラリを介してGoogleSSO IDトークンを検証する方法について解説します。Google Sign-Inを使用すると、ウェブアプリケーションにおいてセキュアで簡単なシングルサインオン(SSO)を実現できます。

GoogleSSO IDトークンとは?

GoogleSSO IDトークンは、Google Sign-Inの一環として生成されるJSON Web Token(JWT)です。このトークンには、ユーザーの認証情報と権限情報が含まれています。トークンの検証を通じて、ユーザーが正当なGoogleアカウントで認証されたことを確認できます。

RubyGemの導入

IDトークンを検証するために、googleauthライブラリを使用します。Gemfileに以下の行を追加します。

gem 'googleauth'

そして、bundle installを実行して依存関係を解決します。

IDトークンの検証コードの実装

require 'googleauth'

def validate_google_id_token(id_token)
  client_id = 'YOUR_GOOGLE_CLIENT_ID'  # Google Developer Consoleで取得したクライアントIDを設定

  verifier = Google::Auth::IDTokens::Verifier.new
  payload = verifier.verify(id_token, aud: client_id)

  # 検証成功時の処理
  puts "検証成功: #{payload}"
  return true

rescue Google::Auth::IDTokens::VerificationError => e
  # 検証エラー時の処理
  puts "検証エラー: #{e.message}"
  return false
end

verifier.verify には必要に応じて azpiss などのクレームの検証が可能ですが、今回の例では aud のみ渡しています。

トークンの検証

id_token_to_validate = 'YOUR_ID_TOKEN_TO_VALIDATE'
validate_google_id_token(id_token_to_validate)

これで、Rubyを使用してgoogleauthライブラリを介してGoogleSSO IDトークンを検証する手順が完了しました。これを適切に組み込むことで、ウェブアプリケーションでのGoogle Sign-Inを安全かつ効果的に実装できます。

まとめ

GoogleSSO IDトークンの検証は、ウェブアプリケーションのセキュリティを向上させ、ユーザー認証プロセスを堅固にします。googleauthライブラリを使用することにより、開発者は簡潔かつ効率的なコードでGoogle Sign-Inのセキュリティを確保できます。是非、参考にしてみてください。