mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 97102f6596
			
		
	
	
		97102f6596
		
	
	
	
	
		
			
			raise NotImplementedError if password is encrypted by digest
  algorithms. This patch is contributed by sheepman. [ruby-list:40467]
* lib/webrick/httpauth/digestauth.rb
  (WEBrick::HTTPAuth::DigestAuth#_authenticate): fix digest calculation.
  This patch is contributed by sheepman. [ruby-list:40482]
* lib/webrick/{httpauth.rb,httpauth/basicauth.rb,httpproxy.rb}: use
  pack/unpack-template char "m" instead of lib/base64.rb to do base64
  encoding/decoding. fixed: [ruby-dev:25336]
* test/webrick/test_httpauth.rb: new file.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
	
			
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| #
 | |
| # httpauth.rb -- HTTP access authentication
 | |
| #
 | |
| # Author: IPR -- Internet Programming with Ruby -- writers
 | |
| # Copyright (c) 2000, 2001 TAKAHASHI Masayoshi, GOTOU Yuuzou
 | |
| # Copyright (c) 2002 Internet Programming with Ruby writers. All rights
 | |
| # reserved.
 | |
| #
 | |
| # $IPR: httpauth.rb,v 1.14 2003/07/22 19:20:42 gotoyuzo Exp $
 | |
| 
 | |
| require 'webrick/httpauth/basicauth'
 | |
| require 'webrick/httpauth/digestauth'
 | |
| require 'webrick/httpauth/htpasswd'
 | |
| require 'webrick/httpauth/htdigest'
 | |
| require 'webrick/httpauth/htgroup'
 | |
| 
 | |
| module WEBrick
 | |
|   module HTTPAuth
 | |
|     module_function
 | |
| 
 | |
|     def _basic_auth(req, res, realm, req_field, res_field, err_type, block)
 | |
|       user = pass = nil
 | |
|       if /^Basic\s+(.*)/o =~ req[req_field]
 | |
|         userpass = $1
 | |
|         user, pass = userpass.unpack("m*")[0].split(":", 2)
 | |
|       end
 | |
|       if block.call(user, pass)
 | |
|         req.user = user
 | |
|         return
 | |
|       end
 | |
|       res[res_field] = "Basic realm=\"#{realm}\""
 | |
|       raise err_type
 | |
|     end
 | |
| 
 | |
|     def basic_auth(req, res, realm, &block)
 | |
|       _basic_auth(req, res, realm, "Authorization", "WWW-Authenticate",
 | |
|                   HTTPStatus::Unauthorized, block)
 | |
|     end
 | |
| 
 | |
|     def proxy_basic_auth(req, res, realm, &block)
 | |
|       _basic_auth(req, res, realm, "Proxy-Authorization", "Proxy-Authenticate",
 | |
|                   HTTPStatus::ProxyAuthenticationRequired, block)
 | |
|     end
 | |
|   end
 | |
| end
 |