Hello community,

here is the log from the commit of package rubygem-rack-oauth2 for 
openSUSE:Factory checked in at 2018-02-27 16:58:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-rack-oauth2 (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-rack-oauth2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-rack-oauth2"

Tue Feb 27 16:58:04 2018 rev:5 rq:579859 version:1.9.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-rack-oauth2/rubygem-rack-oauth2.changes  
2018-02-22 15:02:37.489617971 +0100
+++ 
/work/SRC/openSUSE:Factory/.rubygem-rack-oauth2.new/rubygem-rack-oauth2.changes 
    2018-02-27 16:58:07.267688098 +0100
@@ -1,0 +2,12 @@
+Fri Feb 23 05:32:08 UTC 2018 - [email protected]
+
+- updated to version 1.9.0
+  no changelog found
+
+-------------------------------------------------------------------
+Thu Feb 22 05:31:18 UTC 2018 - [email protected]
+
+- updated to version 1.8.2
+  no changelog found
+
+-------------------------------------------------------------------

Old:
----
  rack-oauth2-1.8.1.gem

New:
----
  rack-oauth2-1.9.0.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-rack-oauth2.spec ++++++
--- /var/tmp/diff_new_pack.zUDD48/_old  2018-02-27 16:58:08.411646765 +0100
+++ /var/tmp/diff_new_pack.zUDD48/_new  2018-02-27 16:58:08.415646621 +0100
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-rack-oauth2
-Version:        1.8.1
+Version:        1.9.0
 Release:        0
 %define mod_name rack-oauth2
 %define mod_full_name %{mod_name}-%{version}

++++++ rack-oauth2-1.8.1.gem -> rack-oauth2-1.9.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Gemfile new/Gemfile
--- old/Gemfile 2018-02-20 05:43:39.000000000 +0100
+++ new/Gemfile 2018-02-23 04:35:00.000000000 +0100
@@ -1,7 +1,7 @@
-source 'http://rubygems.org'
+source 'https://rubygems.org'
 
 platforms :jruby do
   gem 'jruby-openssl', '>= 0.7'
 end
 
-gemspec
\ No newline at end of file
+gemspec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/VERSION new/VERSION
--- old/VERSION 2018-02-20 05:43:39.000000000 +0100
+++ new/VERSION 2018-02-23 04:35:00.000000000 +0100
@@ -1 +1 @@
-1.8.1
+1.9.0
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/oauth2/client.rb 
new/lib/rack/oauth2/client.rb
--- old/lib/rack/oauth2/client.rb       2018-02-20 05:43:39.000000000 +0100
+++ new/lib/rack/oauth2/client.rb       2018-02-23 04:35:00.000000000 +0100
@@ -3,7 +3,7 @@
     class Client
       include AttrRequired, AttrOptional
       attr_required :identifier
-      attr_optional :secret, :redirect_uri, :scheme, :host, :port, 
:authorization_endpoint, :token_endpoint
+      attr_optional :secret, :private_key, :redirect_uri, :scheme, :host, 
:port, :authorization_endpoint, :token_endpoint
 
       def initialize(attributes = {})
         (required_attributes + optional_attributes).each do |key|
@@ -90,6 +90,18 @@
           params.merge!(
             client_assertion_type: URN::ClientAssertionType::JWT_BEARER
           )
+          # NOTE: optionally auto-generate client_assertion.
+          if params[:client_assertion].blank?
+            require 'json/jwt'
+            params[:client_assertion] = JSON::JWT.new(
+              iss: identifier,
+              sub: identifier,
+              aud: absolute_uri_for(token_endpoint),
+              jti: SecureRandom.hex(16),
+              iat: Time.now,
+              exp: 3.minutes.from_now
+            ).sign(private_key || secret).to_s
+          end
         when :saml2_bearer
           params.merge!(
             client_assertion_type: URN::ClientAssertionType::SAML2_BEARER
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2018-02-20 05:43:39.000000000 +0100
+++ new/metadata        2018-02-23 04:35:00.000000000 +0100
@@ -1,14 +1,14 @@
 --- !ruby/object:Gem::Specification
 name: rack-oauth2
 version: !ruby/object:Gem::Version
-  version: 1.8.1
+  version: 1.9.0
 platform: ruby
 authors:
 - nov matake
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2018-02-20 00:00:00.000000000 Z
+date: 2018-02-23 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: rack
@@ -16,70 +16,84 @@
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: '1.1'
+        version: '0'
   type: :runtime
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: '1.1'
+        version: '0'
 - !ruby/object:Gem::Dependency
   name: httpclient
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: '2.4'
+        version: '0'
   type: :runtime
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: '2.4'
+        version: '0'
 - !ruby/object:Gem::Dependency
   name: activesupport
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: '2.3'
+        version: '0'
   type: :runtime
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: '2.3'
+        version: '0'
 - !ruby/object:Gem::Dependency
   name: attr_required
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: 0.0.5
+        version: '0'
+  type: :runtime
+  prerelease: false
+  version_requirements: !ruby/object:Gem::Requirement
+    requirements:
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: '0'
+- !ruby/object:Gem::Dependency
+  name: json-jwt
+  requirement: !ruby/object:Gem::Requirement
+    requirements:
+    - - ">="
+      - !ruby/object:Gem::Version
+        version: 1.9.0
   type: :runtime
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: 0.0.5
+        version: 1.9.0
 - !ruby/object:Gem::Dependency
   name: rake
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: '0.8'
+        version: '0'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
-        version: '0.8'
+        version: '0'
 - !ruby/object:Gem::Dependency
   name: simplecov
   requirement: !ruby/object:Gem::Requirement
@@ -126,16 +140,16 @@
   name: webmock
   requirement: !ruby/object:Gem::Requirement
     requirements:
-    - - "<"
+    - - ">="
       - !ruby/object:Gem::Version
-        version: '1.24'
+        version: '0'
   type: :development
   prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
-    - - "<"
+    - - ">="
       - !ruby/object:Gem::Version
-        version: '1.24'
+        version: '0'
 description: OAuth 2.0 Server & Client Library. Both Bearer and MAC token type 
are
   supported.
 email: [email protected]
@@ -284,10 +298,10 @@
   requirements:
   - - ">="
     - !ruby/object:Gem::Version
-      version: 1.3.6
+      version: '0'
 requirements: []
 rubyforge_project: 
-rubygems_version: 2.6.13
+rubygems_version: 2.6.11
 signing_key: 
 specification_version: 4
 summary: OAuth 2.0 Server & Client Library - Both Bearer and MAC token type 
are supported
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rack-oauth2.gemspec new/rack-oauth2.gemspec
--- old/rack-oauth2.gemspec     2018-02-20 05:43:39.000000000 +0100
+++ new/rack-oauth2.gemspec     2018-02-23 04:35:00.000000000 +0100
@@ -1,26 +1,26 @@
 Gem::Specification.new do |s|
-  s.name = "rack-oauth2"
-  s.version = File.read("VERSION")
-  s.required_rubygems_version = Gem::Requirement.new(">= 1.3.6") if 
s.respond_to? :required_rubygems_version=
-  s.authors = ["nov matake"]
+  s.name = 'rack-oauth2'
+  s.version = File.read('VERSION')
+  s.authors = ['nov matake']
   s.description = %q{OAuth 2.0 Server & Client Library. Both Bearer and MAC 
token type are supported.}
   s.summary = %q{OAuth 2.0 Server & Client Library - Both Bearer and MAC token 
type are supported}
-  s.email = "[email protected]"
-  s.extra_rdoc_files = ["LICENSE", "README.rdoc"]
-  s.rdoc_options = ["--charset=UTF-8"]
-  s.homepage = "http://github.com/nov/rack-oauth2";
+  s.email = '[email protected]'
+  s.extra_rdoc_files = ['LICENSE', 'README.rdoc']
+  s.rdoc_options = ['--charset=UTF-8']
+  s.homepage = 'http://github.com/nov/rack-oauth2'
   s.license = 'MIT'
-  s.require_paths = ["lib"]
+  s.require_paths = ['lib']
   s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| 
File.basename(f) }
   s.files = `git ls-files`.split("\n")
   s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
-  s.add_runtime_dependency "rack", ">= 1.1"
-  s.add_runtime_dependency "httpclient", ">= 2.4"
-  s.add_runtime_dependency "activesupport", ">= 2.3"
-  s.add_runtime_dependency "attr_required", ">= 0.0.5"
-  s.add_development_dependency "rake", ">= 0.8"
-  s.add_development_dependency "simplecov"
-  s.add_development_dependency "rspec"
-  s.add_development_dependency "rspec-its"
-  s.add_development_dependency "webmock", "< 1.24"
+  s.add_runtime_dependency 'rack'
+  s.add_runtime_dependency 'httpclient'
+  s.add_runtime_dependency 'activesupport'
+  s.add_runtime_dependency 'attr_required'
+  s.add_runtime_dependency 'json-jwt', '>= 1.9.0'
+  s.add_development_dependency 'rake'
+  s.add_development_dependency 'simplecov'
+  s.add_development_dependency 'rspec'
+  s.add_development_dependency 'rspec-its'
+  s.add_development_dependency 'webmock'
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/spec/rack/oauth2/client_spec.rb 
new/spec/rack/oauth2/client_spec.rb
--- old/spec/rack/oauth2/client_spec.rb 2018-02-20 05:43:39.000000000 +0100
+++ new/spec/rack/oauth2/client_spec.rb 2018-02-23 04:35:00.000000000 +0100
@@ -79,8 +79,7 @@
   describe '#access_token!' do
     subject { client.access_token! }
 
-    context 'when *args given' do
-
+    context '*args handling' do
       describe 'client authentication method' do
         before do
           client.authorization_code = 'code'
@@ -98,6 +97,108 @@
           client.access_token!
         end
 
+        context 'when jwt_bearer auth method specified' do
+          context 'when client_secret is given' do
+            it 'should be JWT bearer client assertion w/ auto-generated 
HS256-signed JWT assertion' do
+              mock_response(
+                :post,
+                'https://server.example.com/oauth2/token',
+                'tokens/bearer.json',
+                params: {
+                  client_assertion: 
/^eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9\..+/, # NOTE: HS256
+                  client_assertion_type: 
Rack::OAuth2::URN::ClientAssertionType::JWT_BEARER,
+                  code: 'code',
+                  grant_type: 'authorization_code',
+                  redirect_uri: 'https://client.example.com/callback'
+                }
+              )
+              client.access_token! :jwt_bearer
+            end
+          end
+
+          context 'when private_key is given' do
+            context 'when RSA key' do
+              let :client do
+                Rack::OAuth2::Client.new(
+                  identifier: 'client_id',
+                  private_key: OpenSSL::PKey::RSA.generate(2048),
+                  host: 'server.example.com',
+                  redirect_uri: 'https://client.example.com/callback'
+                )
+              end
+
+              it 'should be JWT bearer client assertion w/ auto-generated 
RS256-signed JWT assertion' do
+                mock_response(
+                  :post,
+                  'https://server.example.com/oauth2/token',
+                  'tokens/bearer.json',
+                  params: {
+                    client_assertion: 
/^eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9\..+/, # NOTE: RS256
+                    client_assertion_type: 
Rack::OAuth2::URN::ClientAssertionType::JWT_BEARER,
+                    code: 'code',
+                    grant_type: 'authorization_code',
+                    redirect_uri: 'https://client.example.com/callback'
+                  }
+                )
+                client.access_token! :jwt_bearer
+              end
+            end
+
+            context 'when EC key' do
+              let :client do
+                Rack::OAuth2::Client.new(
+                  identifier: 'client_id',
+                  private_key: 
OpenSSL::PKey::EC.new('prime256v1').generate_key,
+                  host: 'server.example.com',
+                  redirect_uri: 'https://client.example.com/callback'
+                )
+              end
+
+              it 'should be JWT bearer client assertion w/ auto-generated 
ES256-signed JWT assertion' do
+                mock_response(
+                  :post,
+                  'https://server.example.com/oauth2/token',
+                  'tokens/bearer.json',
+                  params: {
+                    client_assertion: 
/^eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9\..+/, # NOTE: ES256
+                    client_assertion_type: 
Rack::OAuth2::URN::ClientAssertionType::JWT_BEARER,
+                    code: 'code',
+                    grant_type: 'authorization_code',
+                    redirect_uri: 'https://client.example.com/callback'
+                  }
+                )
+                client.access_token! :jwt_bearer
+              end
+            end
+          end
+
+          context 'when client_assertion is explicitly given' do
+            let :client do
+              Rack::OAuth2::Client.new(
+                identifier: 'client_id',
+                host: 'server.example.com',
+                redirect_uri: 'https://client.example.com/callback'
+              )
+            end
+
+            it 'should be JWT bearer client assertion w/ specified assertion' 
do
+              mock_response(
+                :post,
+                'https://server.example.com/oauth2/token',
+                'tokens/bearer.json',
+                params: {
+                  client_assertion: 'any.jwt.assertion',
+                  client_assertion_type: 
Rack::OAuth2::URN::ClientAssertionType::JWT_BEARER,
+                  code: 'code',
+                  grant_type: 'authorization_code',
+                  redirect_uri: 'https://client.example.com/callback'
+                }
+              )
+              client.access_token! :jwt_bearer, client_assertion: 
'any.jwt.assertion'
+            end
+          end
+        end
+
         context 'when other auth method specified' do
           it 'should be body params' do
             mock_response(


Reply via email to