openid_connect 1.4.2 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/spec.yml +5 -6
- data/CHANGELOG.md +23 -0
- data/VERSION +1 -1
- data/lib/openid_connect/access_token/mtls.rb +9 -0
- data/lib/openid_connect/access_token.rb +12 -3
- data/lib/openid_connect/client/registrar.rb +2 -2
- data/lib/openid_connect/client.rb +1 -3
- data/lib/openid_connect/discovery/provider/config/response.rb +1 -3
- data/lib/openid_connect/request_object.rb +1 -1
- data/lib/openid_connect.rb +12 -13
- data/openid_connect.gemspec +8 -11
- data/spec/helpers/webmock_helper.rb +7 -1
- data/spec/mock_response/errors/unknown.json +3 -1
- data/spec/openid_connect/client/registrar_spec.rb +1 -1
- data/spec/openid_connect/client_spec.rb +0 -10
- data/spec/openid_connect_spec.rb +2 -2
- metadata +51 -25
- data/lib/openid_connect/debugger/request_filter.rb +0 -28
- data/lib/openid_connect/debugger.rb +0 -3
- data/spec/openid_connect/debugger/request_filter_spec.rb +0 -33
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1846c96c032313eff89f8fcb9a753643c373ff00d6de12254b7f679d7802b4ab
|
|
4
|
+
data.tar.gz: 58c0780a7873c51f18fad3d847272fa49b59d88992a0833cf3f3396edc6d9303
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4d605a9a6301af104cf1173b8626e5c1403a930b16cd49c738e2b7e08a8b8f23cfac4d53cfc649cb5484c73e22e1dc3c8b72941abda64942c405931cc17392e8
|
|
7
|
+
data.tar.gz: 70c4fcd75e6f7913475b5d8c070df75d37c242e3888010b5ec30eba95784258577b6de1575f52e494d44bf0c475a6d62b76e180c67c7e573f198ff910cf35d7c
|
data/.github/workflows/spec.yml
CHANGED
|
@@ -3,7 +3,7 @@ name: Spec
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
branches:
|
|
6
|
-
-
|
|
6
|
+
- main
|
|
7
7
|
pull_request:
|
|
8
8
|
|
|
9
9
|
permissions:
|
|
@@ -13,12 +13,11 @@ jobs:
|
|
|
13
13
|
spec:
|
|
14
14
|
strategy:
|
|
15
15
|
matrix:
|
|
16
|
-
os: ['ubuntu-20.04']
|
|
17
|
-
ruby-version: ['
|
|
18
|
-
# ubuntu 22.04 only supports ssl 3 and thus only ruby 3.1
|
|
16
|
+
os: ['ubuntu-20.04', 'ubuntu-22.04']
|
|
17
|
+
ruby-version: ['3.1', '3.2', '3.3']
|
|
19
18
|
include:
|
|
20
|
-
- os: 'ubuntu-
|
|
21
|
-
ruby-version: '3.
|
|
19
|
+
- os: 'ubuntu-20.04'
|
|
20
|
+
ruby-version: '3.0'
|
|
22
21
|
runs-on: ${{ matrix.os }}
|
|
23
22
|
|
|
24
23
|
steps:
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## [Unreleased]
|
|
2
|
+
|
|
3
|
+
## [2.2.0] - 2022-10-11
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- automatic json response decoding by @nov in https://github.com/nov/openid_connect/pull/77
|
|
8
|
+
|
|
9
|
+
## [2.1.0] - 2022-10-10
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- mTLS access token by @nov in https://github.com/nov/openid_connect/pull/76
|
|
14
|
+
|
|
15
|
+
## [2.0.0] - 2022-10-09
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- start recording CHANGELOG
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- replace httpclient with faraday v2 by @nov in https://github.com/nov/openid_connect/pull/75
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2.3.1
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module OpenIDConnect
|
|
2
|
+
class AccessToken::MTLS < AccessToken
|
|
3
|
+
def initialize(attributes = {})
|
|
4
|
+
super
|
|
5
|
+
http_client.ssl.client_key = attributes[:private_key] || client.private_key
|
|
6
|
+
http_client.ssl.client_cert = attributes[:certificate] || client.certificate
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -15,15 +15,22 @@ module OpenIDConnect
|
|
|
15
15
|
ResponseObject::UserInfo.new hash
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
def to_mtls(attributes = {})
|
|
19
|
+
(required_attributes + optional_attributes).each do |key|
|
|
20
|
+
attributes[key] = self.send(key)
|
|
21
|
+
end
|
|
22
|
+
MTLS.new attributes
|
|
23
|
+
end
|
|
24
|
+
|
|
18
25
|
private
|
|
19
26
|
|
|
20
27
|
def resource_request
|
|
21
28
|
res = yield
|
|
22
29
|
case res.status
|
|
23
30
|
when 200
|
|
24
|
-
|
|
31
|
+
res.body.with_indifferent_access
|
|
25
32
|
when 400
|
|
26
|
-
raise BadRequest.new('API Access
|
|
33
|
+
raise BadRequest.new('API Access Failed', res)
|
|
27
34
|
when 401
|
|
28
35
|
raise Unauthorized.new('Access Token Invalid or Expired', res)
|
|
29
36
|
when 403
|
|
@@ -33,4 +40,6 @@ module OpenIDConnect
|
|
|
33
40
|
end
|
|
34
41
|
end
|
|
35
42
|
end
|
|
36
|
-
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
require 'openid_connect/access_token/mtls'
|
|
@@ -118,7 +118,7 @@ module OpenIDConnect
|
|
|
118
118
|
|
|
119
119
|
def valid_uri?(uri, schemes = ['http', 'https'])
|
|
120
120
|
# NOTE: specify nil for schemes to allow any schemes
|
|
121
|
-
URI::
|
|
121
|
+
URI::DEFAULT_PARSER.make_regexp(schemes).match(uri).present?
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
def validate_contacts
|
|
@@ -170,7 +170,7 @@ module OpenIDConnect
|
|
|
170
170
|
end
|
|
171
171
|
|
|
172
172
|
def handle_success_response(response)
|
|
173
|
-
credentials =
|
|
173
|
+
credentials = response.body.with_indifferent_access
|
|
174
174
|
Client.new(
|
|
175
175
|
identifier: credentials[:client_id],
|
|
176
176
|
secret: credentials[:client_secret],
|
|
@@ -26,7 +26,7 @@ module OpenIDConnect
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def handle_success_response(response)
|
|
29
|
-
token_hash =
|
|
29
|
+
token_hash = response.body.with_indifferent_access
|
|
30
30
|
token_type = (@forced_token_type || token_hash[:token_type]).try(:downcase)
|
|
31
31
|
case token_type
|
|
32
32
|
when 'bearer'
|
|
@@ -34,8 +34,6 @@ module OpenIDConnect
|
|
|
34
34
|
else
|
|
35
35
|
raise Exception.new("Unexpected Token Type: #{token_type}")
|
|
36
36
|
end
|
|
37
|
-
rescue JSON::ParserError
|
|
38
|
-
raise Exception.new("Unknown Token Type")
|
|
39
37
|
end
|
|
40
38
|
end
|
|
41
39
|
end
|
|
@@ -81,9 +81,7 @@ module OpenIDConnect
|
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
def jwks
|
|
84
|
-
@jwks ||=
|
|
85
|
-
OpenIDConnect.http_client.get_content(jwks_uri)
|
|
86
|
-
).with_indifferent_access
|
|
84
|
+
@jwks ||= OpenIDConnect.http_client.get(jwks_uri).body.with_indifferent_access
|
|
87
85
|
JSON::JWK::Set.new @jwks[:keys]
|
|
88
86
|
end
|
|
89
87
|
|
data/lib/openid_connect.rb
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
require 'json'
|
|
2
2
|
require 'logger'
|
|
3
|
+
require 'faraday'
|
|
4
|
+
require 'faraday/follow_redirects'
|
|
3
5
|
require 'swd'
|
|
4
6
|
require 'webfinger'
|
|
5
7
|
require 'active_model'
|
|
6
8
|
require 'tzinfo'
|
|
7
9
|
require 'validate_url'
|
|
8
|
-
require '
|
|
10
|
+
require 'email_validator/strict'
|
|
11
|
+
require 'mail'
|
|
9
12
|
require 'attr_required'
|
|
10
13
|
require 'attr_optional'
|
|
11
14
|
require 'json/jwt'
|
|
@@ -64,17 +67,14 @@ module OpenIDConnect
|
|
|
64
67
|
self.debugging = false
|
|
65
68
|
|
|
66
69
|
def self.http_client
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
_http_client_.request_filter << Debugger::RequestFilter.new if debugging?
|
|
76
|
-
http_config.try(:call, _http_client_)
|
|
77
|
-
_http_client_
|
|
70
|
+
Faraday.new(headers: {user_agent: "OpenIDConnect (#{VERSION})"}) do |faraday|
|
|
71
|
+
faraday.request :url_encoded
|
|
72
|
+
faraday.request :json
|
|
73
|
+
faraday.response :json
|
|
74
|
+
faraday.adapter Faraday.default_adapter
|
|
75
|
+
http_config&.call(faraday)
|
|
76
|
+
faraday.response :logger, OpenIDConnect.logger, {bodies: true} if debugging?
|
|
77
|
+
end
|
|
78
78
|
end
|
|
79
79
|
def self.http_config(&block)
|
|
80
80
|
@sub_protocols.each do |klass|
|
|
@@ -100,4 +100,3 @@ require 'openid_connect/access_token'
|
|
|
100
100
|
require 'openid_connect/jwtnizable'
|
|
101
101
|
require 'openid_connect/connect_object'
|
|
102
102
|
require 'openid_connect/discovery'
|
|
103
|
-
require 'openid_connect/debugger'
|
data/openid_connect.gemspec
CHANGED
|
@@ -16,17 +16,14 @@ Gem::Specification.new do |s|
|
|
|
16
16
|
s.add_runtime_dependency "attr_required", ">= 1.0.0"
|
|
17
17
|
s.add_runtime_dependency "activemodel"
|
|
18
18
|
s.add_runtime_dependency "validate_url"
|
|
19
|
-
s.add_runtime_dependency "
|
|
20
|
-
s.add_runtime_dependency "
|
|
21
|
-
s.add_runtime_dependency
|
|
22
|
-
s.add_runtime_dependency
|
|
23
|
-
s.add_runtime_dependency "
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
# ref.) https://rubygems.org/gems/mailhttps://github.com/mikel/mail
|
|
28
|
-
s.add_runtime_dependency "net-smtp"
|
|
29
|
-
end
|
|
19
|
+
s.add_runtime_dependency "email_validator"
|
|
20
|
+
s.add_runtime_dependency "mail"
|
|
21
|
+
s.add_runtime_dependency 'faraday', '~> 2.0'
|
|
22
|
+
s.add_runtime_dependency 'faraday-follow_redirects'
|
|
23
|
+
s.add_runtime_dependency "json-jwt", ">= 1.16"
|
|
24
|
+
s.add_runtime_dependency "swd", "~> 2.0"
|
|
25
|
+
s.add_runtime_dependency "webfinger", "~> 2.0"
|
|
26
|
+
s.add_runtime_dependency "rack-oauth2", "~> 2.2"
|
|
30
27
|
s.add_development_dependency "rake"
|
|
31
28
|
s.add_development_dependency "rspec"
|
|
32
29
|
s.add_development_dependency "rspec-its"
|
|
@@ -32,7 +32,13 @@ module WebMockHelper
|
|
|
32
32
|
|
|
33
33
|
def response_for(response_file, options = {})
|
|
34
34
|
response = {}
|
|
35
|
-
|
|
35
|
+
format = options[:format] || :json
|
|
36
|
+
if format == :json
|
|
37
|
+
response[:headers] = {
|
|
38
|
+
'Content-Type': 'application/json'
|
|
39
|
+
}
|
|
40
|
+
end
|
|
41
|
+
response[:body] = File.new(File.join(File.dirname(__FILE__), '../mock_response', "#{response_file}.#{format}"))
|
|
36
42
|
if options[:status]
|
|
37
43
|
response[:status] = options[:status]
|
|
38
44
|
end
|
|
@@ -162,16 +162,6 @@ describe OpenIDConnect::Client do
|
|
|
162
162
|
end
|
|
163
163
|
end
|
|
164
164
|
|
|
165
|
-
context 'when invalid JSON is returned' do
|
|
166
|
-
it 'should raise OpenIDConnect::Exception' do
|
|
167
|
-
mock_json :post, client.token_endpoint, 'access_token/invalid_json', request_header: header_params, params: protocol_params do
|
|
168
|
-
expect do
|
|
169
|
-
access_token
|
|
170
|
-
end.to raise_error OpenIDConnect::Exception, 'Unknown Token Type'
|
|
171
|
-
end
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
|
|
175
165
|
context 'otherwise' do
|
|
176
166
|
it 'should raise Unexpected Token Type exception' do
|
|
177
167
|
mock_json :post, client.token_endpoint, 'access_token/mac', request_header: header_params, params: protocol_params do
|
data/spec/openid_connect_spec.rb
CHANGED
|
@@ -46,12 +46,12 @@ describe OpenIDConnect do
|
|
|
46
46
|
context 'with http_config' do
|
|
47
47
|
before do
|
|
48
48
|
OpenIDConnect.http_config do |config|
|
|
49
|
-
config.
|
|
49
|
+
config.ssl.verify = false
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
it 'should configure OpenIDConnect, SWD and Rack::OAuth2\'s http_client' do
|
|
53
53
|
[OpenIDConnect, SWD, WebFinger, Rack::OAuth2].each do |klass|
|
|
54
|
-
klass.http_client.
|
|
54
|
+
klass.http_client.ssl.verify.should be_falsy
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: openid_connect
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- nov matake
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-10-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: tzinfo
|
|
@@ -67,7 +67,7 @@ dependencies:
|
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
70
|
+
name: email_validator
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - ">="
|
|
@@ -81,75 +81,103 @@ dependencies:
|
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: mail
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - ">="
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
89
|
+
version: '0'
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - ">="
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
96
|
+
version: '0'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
98
|
+
name: faraday
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
103
|
+
version: '2.0'
|
|
104
104
|
type: :runtime
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
110
|
+
version: '2.0'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
112
|
+
name: faraday-follow_redirects
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - ">="
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :runtime
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ">="
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: json-jwt
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '1.16'
|
|
132
|
+
type: :runtime
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '1.16'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: swd
|
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
|
114
142
|
requirements:
|
|
115
143
|
- - "~>"
|
|
116
144
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
145
|
+
version: '2.0'
|
|
118
146
|
type: :runtime
|
|
119
147
|
prerelease: false
|
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
149
|
requirements:
|
|
122
150
|
- - "~>"
|
|
123
151
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '
|
|
152
|
+
version: '2.0'
|
|
125
153
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
154
|
+
name: webfinger
|
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
|
128
156
|
requirements:
|
|
129
157
|
- - "~>"
|
|
130
158
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: '
|
|
159
|
+
version: '2.0'
|
|
132
160
|
type: :runtime
|
|
133
161
|
prerelease: false
|
|
134
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
163
|
requirements:
|
|
136
164
|
- - "~>"
|
|
137
165
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: '
|
|
166
|
+
version: '2.0'
|
|
139
167
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
168
|
+
name: rack-oauth2
|
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
|
142
170
|
requirements:
|
|
143
|
-
- - "
|
|
171
|
+
- - "~>"
|
|
144
172
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: '
|
|
173
|
+
version: '2.2'
|
|
146
174
|
type: :runtime
|
|
147
175
|
prerelease: false
|
|
148
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
177
|
requirements:
|
|
150
|
-
- - "
|
|
178
|
+
- - "~>"
|
|
151
179
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: '
|
|
180
|
+
version: '2.2'
|
|
153
181
|
- !ruby/object:Gem::Dependency
|
|
154
182
|
name: rake
|
|
155
183
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -245,6 +273,7 @@ files:
|
|
|
245
273
|
- ".github/workflows/spec.yml"
|
|
246
274
|
- ".gitignore"
|
|
247
275
|
- ".rspec"
|
|
276
|
+
- CHANGELOG.md
|
|
248
277
|
- Gemfile
|
|
249
278
|
- LICENSE
|
|
250
279
|
- README.rdoc
|
|
@@ -253,11 +282,10 @@ files:
|
|
|
253
282
|
- VERSION
|
|
254
283
|
- lib/openid_connect.rb
|
|
255
284
|
- lib/openid_connect/access_token.rb
|
|
285
|
+
- lib/openid_connect/access_token/mtls.rb
|
|
256
286
|
- lib/openid_connect/client.rb
|
|
257
287
|
- lib/openid_connect/client/registrar.rb
|
|
258
288
|
- lib/openid_connect/connect_object.rb
|
|
259
|
-
- lib/openid_connect/debugger.rb
|
|
260
|
-
- lib/openid_connect/debugger/request_filter.rb
|
|
261
289
|
- lib/openid_connect/discovery.rb
|
|
262
290
|
- lib/openid_connect/discovery/provider.rb
|
|
263
291
|
- lib/openid_connect/discovery/provider/config.rb
|
|
@@ -312,7 +340,6 @@ files:
|
|
|
312
340
|
- spec/openid_connect/client/registrar_spec.rb
|
|
313
341
|
- spec/openid_connect/client_spec.rb
|
|
314
342
|
- spec/openid_connect/connect_object_spec.rb
|
|
315
|
-
- spec/openid_connect/debugger/request_filter_spec.rb
|
|
316
343
|
- spec/openid_connect/discovery/provider/config/resource_spec.rb
|
|
317
344
|
- spec/openid_connect/discovery/provider/config/response_spec.rb
|
|
318
345
|
- spec/openid_connect/discovery/provider/config_spec.rb
|
|
@@ -350,7 +377,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
350
377
|
- !ruby/object:Gem::Version
|
|
351
378
|
version: '0'
|
|
352
379
|
requirements: []
|
|
353
|
-
rubygems_version: 3.
|
|
380
|
+
rubygems_version: 3.5.16
|
|
354
381
|
signing_key:
|
|
355
382
|
specification_version: 4
|
|
356
383
|
summary: OpenID Connect Server & Client Library
|
|
@@ -386,7 +413,6 @@ test_files:
|
|
|
386
413
|
- spec/openid_connect/client/registrar_spec.rb
|
|
387
414
|
- spec/openid_connect/client_spec.rb
|
|
388
415
|
- spec/openid_connect/connect_object_spec.rb
|
|
389
|
-
- spec/openid_connect/debugger/request_filter_spec.rb
|
|
390
416
|
- spec/openid_connect/discovery/provider/config/resource_spec.rb
|
|
391
417
|
- spec/openid_connect/discovery/provider/config/response_spec.rb
|
|
392
418
|
- spec/openid_connect/discovery/provider/config_spec.rb
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
module OpenIDConnect
|
|
2
|
-
module Debugger
|
|
3
|
-
class RequestFilter
|
|
4
|
-
# Callback called in HTTPClient (before sending a request)
|
|
5
|
-
# request:: HTTP::Message
|
|
6
|
-
def filter_request(request)
|
|
7
|
-
started = "======= [OpenIDConnect] HTTP REQUEST STARTED ======="
|
|
8
|
-
log started, request.dump
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# Callback called in HTTPClient (after received a response)
|
|
12
|
-
# request:: HTTP::Message
|
|
13
|
-
# response:: HTTP::Message
|
|
14
|
-
def filter_response(request, response)
|
|
15
|
-
finished = "======= [OpenIDConnect] HTTP REQUEST FINISHED ======="
|
|
16
|
-
log '-' * 50, response.dump, finished
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
private
|
|
20
|
-
|
|
21
|
-
def log(*outputs)
|
|
22
|
-
outputs.each do |output|
|
|
23
|
-
OpenIDConnect.logger.info output
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe OpenIDConnect::Debugger::RequestFilter do
|
|
4
|
-
let(:resource_endpoint) { 'https://example.com/resources' }
|
|
5
|
-
let(:request) { HTTP::Message.new_request(:get, URI.parse(resource_endpoint)) }
|
|
6
|
-
let(:response) { HTTP::Message.new_response({hello: 'world'}.to_json) }
|
|
7
|
-
let(:request_filter) { OpenIDConnect::Debugger::RequestFilter.new }
|
|
8
|
-
|
|
9
|
-
describe '#filter_request' do
|
|
10
|
-
it 'should log request' do
|
|
11
|
-
[
|
|
12
|
-
"======= [OpenIDConnect] HTTP REQUEST STARTED =======",
|
|
13
|
-
request.dump
|
|
14
|
-
].each do |output|
|
|
15
|
-
expect(OpenIDConnect.logger).to receive(:info).with output
|
|
16
|
-
end
|
|
17
|
-
request_filter.filter_request(request)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
describe '#filter_response' do
|
|
22
|
-
it 'should log response' do
|
|
23
|
-
[
|
|
24
|
-
"--------------------------------------------------",
|
|
25
|
-
response.dump,
|
|
26
|
-
"======= [OpenIDConnect] HTTP REQUEST FINISHED ======="
|
|
27
|
-
].each do |output|
|
|
28
|
-
expect(OpenIDConnect.logger).to receive(:info).with output
|
|
29
|
-
end
|
|
30
|
-
request_filter.filter_response(request, response)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|