GoogleIDToken currently provides a single useful class “Validator”, which provides a single method “#check”, which parses and validates an ID Token allegedly generated by Google auth servers.
Creating a new validator takes a single optional hash argument. If the hash has an entry for :x509_key, that value is taken to be a key as created by OpenSSL::X509::Certificate.new, and the token is validated using that key. If there is no such entry, the keys are fetched from the Google certs endpoint www.googleapis.com/oauth2/v1/certs.
This is a fork from: https://code.google.com/p/google-id-token/
gem 'google-id-token', git: 'git@github.com:Nerian/google-id-token.git'
validator = GoogleIDToken::Validator.new jwt = validator.check(token, required_audience, optional_client_id) if jwt email = jwt['email'] else report "Cannot validate: #{validator.problem}" end cert = OpenSSL::X509::Certificate.new(File.read('my-cert.pem')) validator = GoogleIDToken::Validator.new(:x509_cert => cert) jwt = validator.check(token, required_audience, required_client_id) if jwt email = jwt['email'] else report "Cannot validate: #{validator.problem}" end