Changeset 1823
- Timestamp:
- 05/31/07 23:24:19 (2 years ago)
- Files:
-
- trunk/lib/soap/rpc/cgistub.rb (modified) (3 diffs)
- trunk/lib/soap/rpc/httpserver.rb (modified) (1 diff)
- trunk/lib/soap/rpc/soaplet.rb (modified) (5 diffs)
- trunk/sample/soap/basicauth/client.rb (modified) (1 diff)
- trunk/sample/soap/basicauth/htpasswd (added)
- trunk/sample/soap/basicauth/server.rb (modified) (2 diffs)
- trunk/sample/soap/cookies (moved) (moved from trunk/sample/cookies)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/rpc/cgistub.rb
r1822 r1823 37 37 38 38 def cookies; end 39 40 def user; end 39 41 end 40 42 … … 62 64 end 63 65 end 66 67 def user 68 ENV['REMOTE_USER'] 69 end 64 70 end 65 71 … … 86 92 [WEBrick::Cookie.parse(cookie)] 87 93 end 94 end 95 96 def user 97 @request.env['REMOTE_USER'] 88 98 end 89 99 end trunk/lib/soap/rpc/httpserver.rb
r1731 r1823 51 51 def shutdown 52 52 @server.shutdown if @server 53 end 54 55 def authenticator 56 @soaplet.authenticator 57 end 58 59 def authenticator=(authenticator) 60 @soaplet.authenticator = authenticator 53 61 end 54 62 trunk/lib/soap/rpc/soaplet.rb
r1822 r1823 42 42 public 43 43 attr_reader :options 44 attr_accessor :authenticator 44 45 45 46 def initialize(router = nil) 46 47 @router = router || ::SOAP::RPC::Router.new(self.class.name) 47 48 @options = {} 49 @authenticator = nil 48 50 @config = {} 49 51 end … … 82 84 def do_POST(req, res) 83 85 logger.debug { "SOAP request: " + req.body } if logger 86 if @authenticator 87 @authenticator.authenticate(req, res) 88 # you can check authenticated user with SOAP::RPC::SOAPlet.user 89 end 84 90 begin 85 91 conn_data = ::SOAP::StreamHandler::ConnectionData.new … … 87 93 @router.external_ces = @options[:external_ces] 88 94 Mapping.protect_threadvars(:SOAPlet) do 95 SOAPlet.user = req.user 89 96 SOAPlet.cookies = req.cookies 90 97 conn_data = @router.route(conn_data) … … 106 113 107 114 def self.cookies 115 get_variable(:Cookies) 116 end 117 118 def self.cookies=(cookies) 119 set_variable(:Cookies, cookies) 120 end 121 122 def self.user 123 get_variable(:User) 124 end 125 126 def self.user=(user) 127 set_variable(:User, user) 128 end 129 130 private 131 132 def self.get_variable(name) 108 133 if var = Thread.current[:SOAPlet] 109 var[ :Cookies]134 var[name] 110 135 else 111 136 nil … … 113 138 end 114 139 115 def self.cookies=(cookies) 116 var = Thread.current[:SOAPlet] = {} 117 var[:Cookies] = cookies 118 end 119 120 private 140 def self.set_variable(name, value) 141 var = Thread.current[:SOAPlet] ||= {} 142 var[name] = value 143 end 121 144 122 145 def logger trunk/sample/soap/basicauth/client.rb
r1568 r1823 6 6 drv.wiredump_dev = STDERR if $DEBUG 7 7 drv.options["protocol.http.basic_auth"] << 8 ['http://localhost:7000/', " username", "passwd"]8 ['http://localhost:7000/', "admin", "admin"] 9 9 10 10 p drv.add_method('echo', 'msg').call('hello') trunk/sample/soap/basicauth/server.rb
r1568 r1823 19 19 20 20 def echo(msg) 21 "echo from servant ##{@counter} : #{msg}"21 "echo from servant ##{@counter} (#{SOAP::RPC::SOAPlet.user}): #{msg}" 22 22 end 23 23 end … … 26 26 super 27 27 add_rpc_request_servant(Servant) 28 end 29 30 def on_init 31 userdb_file = File.join(File.dirname(__FILE__), 'htpasswd') 32 userdb = WEBrick::HTTPAuth::Htpasswd.new(userdb_file) 33 self.authenticator = WEBrick::HTTPAuth::BasicAuth.new(:Realm => 'auth', :UserDB => userdb) 28 34 end 29 35 end