aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2015-08-11 17:25:00 -0600
committerSean Griffin <sean@seantheprogrammer.com>2015-08-11 17:25:00 -0600
commite69364bc2da0cd5cabe3f01a8dce27ac841a3a2b (patch)
tree49e83cb67b91484dfe2e8c82515662ae8d29e614
parent97d7dc48d68e4c20c17e315c8f4d3f045ed97f5a (diff)
parentdec2f52fa494c5adf8805ec227ed60d911a6fb4a (diff)
downloadrails-e69364bc2da0cd5cabe3f01a8dce27ac841a3a2b.tar.gz
rails-e69364bc2da0cd5cabe3f01a8dce27ac841a3a2b.tar.bz2
rails-e69364bc2da0cd5cabe3f01a8dce27ac841a3a2b.zip
Merge pull request #21203 from denniss/issue-21199
Authorization scheme should be case insensitive. Fixes #21199
-rw-r--r--actionpack/lib/action_controller/metal/http_authentication.rb2
-rw-r--r--actionpack/test/controller/http_basic_authentication_test.rb8
2 files changed, 9 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/metal/http_authentication.rb b/actionpack/lib/action_controller/metal/http_authentication.rb
index 032275ac64..bbb38cf8fc 100644
--- a/actionpack/lib/action_controller/metal/http_authentication.rb
+++ b/actionpack/lib/action_controller/metal/http_authentication.rb
@@ -94,7 +94,7 @@ module ActionController
end
def has_basic_credentials?(request)
- request.authorization.present? && (auth_scheme(request) == 'Basic')
+ request.authorization.present? && (auth_scheme(request).downcase == 'basic')
end
def user_name_and_password(request)
diff --git a/actionpack/test/controller/http_basic_authentication_test.rb b/actionpack/test/controller/http_basic_authentication_test.rb
index ed3632007d..0a5e5402b9 100644
--- a/actionpack/test/controller/http_basic_authentication_test.rb
+++ b/actionpack/test/controller/http_basic_authentication_test.rb
@@ -100,6 +100,14 @@ class HttpBasicAuthenticationTest < ActionController::TestCase
assert_no_match(/\n/, result)
end
+ test "succesful authentication with uppercase authorization scheme" do
+ @request.env['HTTP_AUTHORIZATION'] = "BASIC #{::Base64.encode64("lifo:world")}"
+ get :index
+
+ assert_response :success
+ assert_equal 'Hello Secret', @response.body, 'Authentication failed when authorization scheme BASIC'
+ end
+
test "authentication request without credential" do
get :display