authlete 1.39.0 → 1.40.0
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/README.md +38 -0
- data/lib/authlete/api.rb +17 -0
- data/lib/authlete/logging.rb +94 -0
- data/lib/authlete/version.rb +1 -1
- data/lib/authlete.rb +3 -0
- metadata +7 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 74a860b721b7613f2db6d38a29c773099a775a6a2db4cad9aee401acfc5c3720
|
|
4
|
+
data.tar.gz: a9f1de04dc44a566132358b9f90c5c72db7e8e05891c9bb8b48f32c5394c47a2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0cdcaef0259445a1ba5067fbc5fd7e3f97cbf8f1ee01c5b7b346ce379e3cbe11447be47893e5b7d39cebd0feacc8d108df2fe7aede2cff8410de3831b8300bd6
|
|
7
|
+
data.tar.gz: 19d66a165c4d2cebdc19dcc35f2c8dcf72f964b5a5a5bd15fdf195106290d495e728608bd69658cb4e4820c9b87243c1fe56b95aa8d10cdb5e6b06d087baf06d
|
data/README.md
CHANGED
|
@@ -6,6 +6,44 @@ authlete-ruby-gem
|
|
|
6
6
|
Ruby library for [Authlete Web APIs](https://docs.authlete.com/).
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
# REST Client Logging Configuration
|
|
10
|
+
|
|
11
|
+
The library provides control over `rest-client` logging behavior through `Authlete::LoggingLevel`:
|
|
12
|
+
|
|
13
|
+
- `DEFAULT` - Respects the logger set in `RestClient.log` (default behavior)
|
|
14
|
+
- `SENSITIVE` - Logs all information but redacts sensitive data (tokens, credentials)
|
|
15
|
+
- `NONE` - Disables all logging, useful for handling sensitive PII data
|
|
16
|
+
|
|
17
|
+
Example configuration:
|
|
18
|
+
|
|
19
|
+
```ruby
|
|
20
|
+
# Default behavior (uses RestClient.log as is)
|
|
21
|
+
config = {
|
|
22
|
+
host: 'https://api.authlete.com',
|
|
23
|
+
service_api_key: 'YOUR_KEY',
|
|
24
|
+
service_api_secret: 'YOUR_SECRET',
|
|
25
|
+
rest_client_logging_level: Authlete::LoggingLevel::DEFAULT
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
# Redact sensitive data
|
|
29
|
+
config = {
|
|
30
|
+
host: 'https://api.authlete.com',
|
|
31
|
+
service_api_key: 'YOUR_KEY',
|
|
32
|
+
service_api_secret: 'YOUR_SECRET',
|
|
33
|
+
rest_client_logging_level: Authlete::LoggingLevel::SENSITIVE
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Disable all RestClient logging
|
|
37
|
+
config = {
|
|
38
|
+
host: 'https://api.authlete.com',
|
|
39
|
+
service_api_key: 'YOUR_KEY',
|
|
40
|
+
service_api_secret: 'YOUR_SECRET',
|
|
41
|
+
rest_client_logging_level: Authlete::LoggingLevel::NONE
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
api_client = Authlete::Api.new(config)
|
|
45
|
+
```
|
|
46
|
+
|
|
9
47
|
# License
|
|
10
48
|
|
|
11
49
|
Apache License, Version 2.0
|
data/lib/authlete/api.rb
CHANGED
|
@@ -40,6 +40,23 @@ module Authlete
|
|
|
40
40
|
@service_api_key = config[:service_api_key]
|
|
41
41
|
@service_api_secret = config[:service_api_secret]
|
|
42
42
|
@extra_headers = nil
|
|
43
|
+
|
|
44
|
+
configure_logging(config[:rest_client_logging_level])
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def configure_logging(level)
|
|
50
|
+
return unless RestClient.log
|
|
51
|
+
|
|
52
|
+
case level
|
|
53
|
+
when LoggingLevel::SENSITIVE
|
|
54
|
+
RestClient.log = Authlete::SensitiveLogger.new(RestClient.log)
|
|
55
|
+
when LoggingLevel::NONE
|
|
56
|
+
RestClient.log = Authlete::NullLogger.new
|
|
57
|
+
when LoggingLevel::DEFAULT, nil
|
|
58
|
+
# Keep original logger (default behavior)
|
|
59
|
+
end
|
|
43
60
|
end
|
|
44
61
|
|
|
45
62
|
def call_api(method, path, content_type, payload, user, password)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
module Authlete
|
|
2
|
+
module LoggingLevel
|
|
3
|
+
DEFAULT = :default # Original logging behavior
|
|
4
|
+
SENSITIVE = :sensitive # Redact sensitive data
|
|
5
|
+
NONE = :none # No logging
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class NullLogger
|
|
9
|
+
def <<(msg)
|
|
10
|
+
# NOOP
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class SensitiveLogger
|
|
15
|
+
SENSITIVE_FIELDS = [
|
|
16
|
+
# OAuth/OIDC related
|
|
17
|
+
'client_secret',
|
|
18
|
+
'access_token',
|
|
19
|
+
'refresh_token',
|
|
20
|
+
'authorization_code',
|
|
21
|
+
'id_token',
|
|
22
|
+
'code',
|
|
23
|
+
# Device flow
|
|
24
|
+
'user_code',
|
|
25
|
+
'client_notification_token',
|
|
26
|
+
|
|
27
|
+
# Authlete Credentials
|
|
28
|
+
'service_api_key',
|
|
29
|
+
'service_api_secret',
|
|
30
|
+
'service_owner_api_key',
|
|
31
|
+
'service_owner_api_secret',
|
|
32
|
+
'sns_credentials',
|
|
33
|
+
'developer_sns_credentials',
|
|
34
|
+
'ticket',
|
|
35
|
+
'subject',
|
|
36
|
+
|
|
37
|
+
# Authentication & Authorization
|
|
38
|
+
'password',
|
|
39
|
+
'token',
|
|
40
|
+
'authorization',
|
|
41
|
+
'client_certificate',
|
|
42
|
+
'client_certificate_path',
|
|
43
|
+
|
|
44
|
+
# JWT/Crypto/Certificate related
|
|
45
|
+
'jwks',
|
|
46
|
+
'federation_jwks',
|
|
47
|
+
'client_secret_expires_at',
|
|
48
|
+
'trusted_root_certificates',
|
|
49
|
+
'encryption_key_id',
|
|
50
|
+
'signature_key_id',
|
|
51
|
+
'access_token_signature_key_id',
|
|
52
|
+
'refresh_token_signature_key_id',
|
|
53
|
+
'id_token_signature_key_id'
|
|
54
|
+
].freeze
|
|
55
|
+
|
|
56
|
+
SENSITIVE_PATTERNS = SENSITIVE_FIELDS.flat_map do |field|
|
|
57
|
+
[
|
|
58
|
+
# JSON format
|
|
59
|
+
/("#{field}"\s*:\s*)"[^"]*"/,
|
|
60
|
+
# URL-encoded format
|
|
61
|
+
/#{field}=([^&\s]+)/
|
|
62
|
+
]
|
|
63
|
+
end.freeze
|
|
64
|
+
|
|
65
|
+
REDACTION_MARK = '***** REDACTED *****'
|
|
66
|
+
|
|
67
|
+
def initialize(original_logger)
|
|
68
|
+
@original_logger = original_logger
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def <<(msg)
|
|
72
|
+
redacted_msg = redact_sensitive_data(msg)
|
|
73
|
+
@original_logger << redacted_msg
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
private
|
|
77
|
+
|
|
78
|
+
def redact_sensitive_data(msg)
|
|
79
|
+
return msg unless msg.is_a?(String)
|
|
80
|
+
|
|
81
|
+
redacted = msg.dup
|
|
82
|
+
SENSITIVE_PATTERNS.each do |pattern|
|
|
83
|
+
if pattern.to_s.include?('"')
|
|
84
|
+
# JSON format
|
|
85
|
+
redacted.gsub!(pattern, "\\1#{REDACTION_MARK.inspect}")
|
|
86
|
+
else
|
|
87
|
+
# URL-encoded format
|
|
88
|
+
redacted.gsub!(pattern) { "#{$~[0].split('=')[0]}=#{REDACTION_MARK}" }
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
redacted
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
data/lib/authlete/version.rb
CHANGED
data/lib/authlete.rb
CHANGED
|
@@ -24,6 +24,9 @@ module Authlete
|
|
|
24
24
|
autoload :Exception, 'authlete/exception'
|
|
25
25
|
autoload :ParamInitializer, 'authlete/model/param-initializer'
|
|
26
26
|
autoload :Utility, 'authlete/utility'
|
|
27
|
+
autoload :LoggingLevel, 'authlete/logging'
|
|
28
|
+
autoload :NullLogger, 'authlete/logging'
|
|
29
|
+
autoload :SensitiveLogger, 'authlete/logging'
|
|
27
30
|
|
|
28
31
|
module Model
|
|
29
32
|
autoload :Base, 'authlete/model/base'
|
metadata
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: authlete
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.40.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Takahiko Kawasaki
|
|
8
8
|
- Hideki Ikeda
|
|
9
9
|
- Seth Wright
|
|
10
|
-
autorequire:
|
|
10
|
+
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2025-
|
|
13
|
+
date: 2025-02-17 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rest-client
|
|
@@ -72,6 +72,7 @@ files:
|
|
|
72
72
|
- lib/authlete/api.rb
|
|
73
73
|
- lib/authlete/authentication-server.rb
|
|
74
74
|
- lib/authlete/exception.rb
|
|
75
|
+
- lib/authlete/logging.rb
|
|
75
76
|
- lib/authlete/model/base.rb
|
|
76
77
|
- lib/authlete/model/client-extension.rb
|
|
77
78
|
- lib/authlete/model/client.rb
|
|
@@ -168,7 +169,7 @@ homepage: https://www.authlete.com/
|
|
|
168
169
|
licenses:
|
|
169
170
|
- Apache License, Version 2.0
|
|
170
171
|
metadata: {}
|
|
171
|
-
post_install_message:
|
|
172
|
+
post_install_message:
|
|
172
173
|
rdoc_options: []
|
|
173
174
|
require_paths:
|
|
174
175
|
- lib
|
|
@@ -183,8 +184,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
183
184
|
- !ruby/object:Gem::Version
|
|
184
185
|
version: '0'
|
|
185
186
|
requirements: []
|
|
186
|
-
rubygems_version: 3.
|
|
187
|
-
signing_key:
|
|
187
|
+
rubygems_version: 3.4.10
|
|
188
|
+
signing_key:
|
|
188
189
|
specification_version: 4
|
|
189
190
|
summary: A library for Authlete Web APIs
|
|
190
191
|
test_files: []
|