FEATURE: Add detailed OIDC request and response logs

This makes use of Faraday middleware to log precise details about all requests made by the OAuth2 gem. This should make it easier to debug configuration issues
This commit is contained in:
David Taylor 2020-09-25 09:47:24 +01:00
parent 9ada9528e8
commit 109ec1a275
No known key found for this signature in database
GPG Key ID: 46904C18B1D3F434
3 changed files with 38 additions and 0 deletions

View File

@ -64,6 +64,17 @@ class OpenIDConnectAuthenticator < Auth::ManagedAuthenticator
token_params: token_params,
passthrough_authorize_options: SiteSetting.openid_connect_authorize_parameters.split("|")
)
if SiteSetting.openid_connect_verbose_logging
opts[:client_options][:connection_build] = lambda { |builder|
builder.response :logger, Rails.logger, { bodies: true, formatter: OIDCFaradayFormatter }
# Default stack:
builder.request :url_encoded # form-encode POST params
builder.adapter Faraday.default_adapter # make requests with Net::HTTP
}
end
}
end
end

View File

@ -0,0 +1,26 @@
# frozen_string_literal: true
require 'faraday/logging/formatter'
class OIDCFaradayFormatter < Faraday::Logging::Formatter
def request(env)
warn <<~LOG
OIDC Debugging: request #{env.method.upcase} #{env.url.to_s}
Headers: #{env.request_headers}
Body: #{env[:body]}
LOG
end
def response(env)
warn <<~LOG
OIDC Debugging: response status #{env.status}
From #{env.method.upcase} #{env.url.to_s}
Headers: #{env.response_headers}
Body: #{env[:body]}
LOG
end
end

View File

@ -6,6 +6,7 @@
# authors: David Taylor
# url: https://github.com/discourse/discourse-openid-connect
require_relative "lib/openid_connect_faraday_formatter"
require_relative "lib/omniauth_open_id_connect"
require_relative "lib/openid_connect_authenticator"