DEV: Make request timeout configurable (#38)

This commit is contained in:
David Taylor 2022-05-23 16:05:20 +01:00 committed by GitHub
parent 344e962299
commit 8e4c5f7e61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions

View File

@ -1,8 +1,6 @@
# frozen_string_literal: true
class OpenIDConnectAuthenticator < Auth::ManagedAuthenticator
REQUEST_TIMEOUT_SECONDS = 10
def name
'oidc'
end
@ -45,7 +43,7 @@ class OpenIDConnectAuthenticator < Auth::ManagedAuthenticator
result = Discourse.cache.fetch("openid-connect-discovery-#{document_url}", expires_in: 10.minutes) do
from_cache = false
oidc_log("Fetching discovery document from #{document_url}")
connection = Faraday.new(request: { timeout: REQUEST_TIMEOUT_SECONDS }) { |c| c.use Faraday::Response::RaiseError }
connection = Faraday.new(request: { timeout: request_timeout_seconds }) { |c| c.use Faraday::Response::RaiseError }
JSON.parse(connection.get(document_url).body)
rescue Faraday::Error, JSON::ParserError => e
oidc_log("Fetching discovery document raised error #{e.class} #{e.message}", error: true)
@ -94,7 +92,7 @@ class OpenIDConnectAuthenticator < Auth::ManagedAuthenticator
claims: SiteSetting.openid_connect_claims
)
opts[:client_options][:connection_opts] = { request: { timeout: REQUEST_TIMEOUT_SECONDS } }
opts[:client_options][:connection_opts] = { request: { timeout: request_timeout_seconds } }
if SiteSetting.openid_connect_verbose_logging
opts[:client_options][:connection_build] = lambda { |builder|
@ -108,4 +106,8 @@ class OpenIDConnectAuthenticator < Auth::ManagedAuthenticator
}
end
def request_timeout_seconds
GlobalSetting.openid_connect_request_timout_seconds
end
end

View File

@ -13,6 +13,8 @@ require_relative "lib/openid_connect_faraday_formatter"
require_relative "lib/omniauth_open_id_connect"
require_relative "lib/openid_connect_authenticator"
GlobalSetting.add_default :openid_connect_request_timout_seconds, 10
# RP-initiated logout
# https://openid.net/specs/openid-connect-rpinitiated-1_0.html
on(:before_session_destroy) do |data|