Support ruby-jwt 2.0

This version of ruby-jwt requires specification of the algorithm (see
jwt/ruby-jwt#184) for more information.

I've created a PR on signet to. That has to be merged before ruby-jwt
2.0 can be really used (see https://github.com/google/signet/pull/93).

Tested locally against ruby-jwt 2.0 and 1.5.6.
This commit is contained in:
Jurriaan Pruis 2017-09-15 15:53:38 +02:00
parent c9a1805b69
commit 2e9841e084
3 changed files with 6 additions and 4 deletions

View File

@ -28,7 +28,7 @@ Gem::Specification.new do |s|
s.add_dependency 'faraday', '~> 0.12' s.add_dependency 'faraday', '~> 0.12'
s.add_dependency 'logging', '~> 2.0' s.add_dependency 'logging', '~> 2.0'
s.add_dependency 'jwt', '~> 1.4' s.add_dependency 'jwt', '>= 1.4', '< 3.0'
s.add_dependency 'memoist', '~> 0.12' s.add_dependency 'memoist', '~> 0.12'
s.add_dependency 'multi_json', '~> 1.11' s.add_dependency 'multi_json', '~> 1.11'
s.add_dependency 'os', '~> 0.9' s.add_dependency 'os', '~> 0.9'

View File

@ -54,7 +54,7 @@ shared_examples 'jwt header auth' do
expect(hdr).to_not be_nil expect(hdr).to_not be_nil
expect(hdr.start_with?(auth_prefix)).to be true expect(hdr.start_with?(auth_prefix)).to be true
authorization = hdr[auth_prefix.length..-1] authorization = hdr[auth_prefix.length..-1]
payload, = JWT.decode(authorization, @key.public_key) payload, = JWT.decode(authorization, @key.public_key, true, algorithm: 'RS256')
expect(payload['aud']).to eq(test_uri) expect(payload['aud']).to eq(test_uri)
expect(payload['iss']).to eq(client_email) expect(payload['iss']).to eq(client_email)
end end
@ -135,7 +135,8 @@ describe Google::Auth::ServiceAccountCredentials do
blk = proc do |request| blk = proc do |request|
params = Addressable::URI.form_unencode(request.body) params = Addressable::URI.form_unencode(request.body)
_claim, _header = JWT.decode(params.assoc('assertion').last, _claim, _header = JWT.decode(params.assoc('assertion').last,
@key.public_key) @key.public_key, true,
algorithm: 'RS256')
end end
stub_request(:post, 'https://www.googleapis.com/oauth2/v4/token') stub_request(:post, 'https://www.googleapis.com/oauth2/v4/token')
.with(body: hash_including( .with(body: hash_including(

View File

@ -57,7 +57,8 @@ describe Signet::OAuth2::Client do
blk = proc do |request| blk = proc do |request|
params = Addressable::URI.form_unencode(request.body) params = Addressable::URI.form_unencode(request.body)
_claim, _header = JWT.decode(params.assoc('assertion').last, _claim, _header = JWT.decode(params.assoc('assertion').last,
@key.public_key) @key.public_key, true,
algorithm: 'RS256')
end end
stub_request(:post, 'https://accounts.google.com/o/oauth2/token') stub_request(:post, 'https://accounts.google.com/o/oauth2/token')
.with(body: hash_including( .with(body: hash_including(