From 109ec1a27546d5282d194b19e1605ea7ab98aad7 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 25 Sep 2020 09:47:24 +0100 Subject: [PATCH] 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 --- lib/openid_connect_authenticator.rb | 11 +++++++++++ lib/openid_connect_faraday_formatter.rb | 26 +++++++++++++++++++++++++ plugin.rb | 1 + 3 files changed, 38 insertions(+) create mode 100644 lib/openid_connect_faraday_formatter.rb diff --git a/lib/openid_connect_authenticator.rb b/lib/openid_connect_authenticator.rb index 185c630..f86c35e 100644 --- a/lib/openid_connect_authenticator.rb +++ b/lib/openid_connect_authenticator.rb @@ -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 diff --git a/lib/openid_connect_faraday_formatter.rb b/lib/openid_connect_faraday_formatter.rb new file mode 100644 index 0000000..343a21b --- /dev/null +++ b/lib/openid_connect_faraday_formatter.rb @@ -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 diff --git a/plugin.rb b/plugin.rb index 07719f4..cd95021 100644 --- a/plugin.rb +++ b/plugin.rb @@ -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"