SECURITY: Improve SSRF protections (#72)
See https://github.com/discourse/discourse/security/advisories/GHSA-rcc5-28r3-23rr
This commit is contained in:
parent
2efe6578ce
commit
16ddafad9a
23
plugin.rb
23
plugin.rb
|
@ -123,15 +123,14 @@ class ::OAuth2BasicAuthenticator < Auth::ManagedAuthenticator
|
||||||
opts[:scope] = SiteSetting.oauth2_scope
|
opts[:scope] = SiteSetting.oauth2_scope
|
||||||
end
|
end
|
||||||
|
|
||||||
if SiteSetting.oauth2_debug_auth && defined? OAuth2FaradayFormatter
|
opts[:client_options][:connection_build] = lambda { |builder|
|
||||||
opts[:client_options][:connection_build] = lambda { |builder|
|
if SiteSetting.oauth2_debug_auth && defined? OAuth2FaradayFormatter
|
||||||
builder.response :logger, Rails.logger, { bodies: true, formatter: OAuth2FaradayFormatter }
|
builder.response :logger, Rails.logger, { bodies: true, formatter: OAuth2FaradayFormatter }
|
||||||
|
end
|
||||||
|
|
||||||
# Default stack:
|
builder.request :url_encoded # form-encode POST params
|
||||||
builder.request :url_encoded # form-encode POST params
|
builder.adapter FinalDestination::FaradayAdapter # make requests with FinalDestination::HTTP
|
||||||
builder.adapter Faraday.default_adapter # make requests with Net::HTTP
|
}
|
||||||
}
|
|
||||||
end
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -206,16 +205,14 @@ class ::OAuth2BasicAuthenticator < Auth::ManagedAuthenticator
|
||||||
|
|
||||||
def fetch_user_details(token, id)
|
def fetch_user_details(token, id)
|
||||||
user_json_url = SiteSetting.oauth2_user_json_url.sub(':token', token.to_s).sub(':id', id.to_s)
|
user_json_url = SiteSetting.oauth2_user_json_url.sub(':token', token.to_s).sub(':id', id.to_s)
|
||||||
user_json_method = SiteSetting.oauth2_user_json_url_method
|
user_json_method = SiteSetting.oauth2_user_json_url_method.downcase.to_sym
|
||||||
|
|
||||||
log("user_json_url: #{user_json_method} #{user_json_url}")
|
log("user_json_url: #{user_json_method} #{user_json_url}")
|
||||||
|
|
||||||
bearer_token = "Bearer #{token}"
|
bearer_token = "Bearer #{token}"
|
||||||
connection = Excon.new(
|
connection = Faraday.new { |f| f.adapter FinalDestination::FaradayAdapter }
|
||||||
user_json_url,
|
headers = { 'Authorization' => bearer_token, 'Accept' => 'application/json' }
|
||||||
headers: { 'Authorization' => bearer_token, 'Accept' => 'application/json' }
|
user_json_response = connection.run_request(user_json_method, user_json_url, nil, headers)
|
||||||
)
|
|
||||||
user_json_response = connection.request(method: user_json_method)
|
|
||||||
|
|
||||||
log("user_json_response: #{user_json_response.inspect}")
|
log("user_json_response: #{user_json_response.inspect}")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue