diff --git a/src/authm_mad/remotes/server_cipher/server_cipher_auth.rb b/src/authm_mad/remotes/server_cipher/server_cipher_auth.rb index 16b68fe497..5a88203f45 100644 --- a/src/authm_mad/remotes/server_cipher/server_cipher_auth.rb +++ b/src/authm_mad/remotes/server_cipher/server_cipher_auth.rb @@ -60,7 +60,8 @@ class ServerCipherAuth # Generates a login token in the form: # - server_user:target_user:time_expires # The token is then encrypted with the contents of one_auth - def login_token(target_user) + def login_token(target_user=nil) + target_user ||= @server_user token_txt = "#{@server_user}:#{target_user}:#{Time.now.to_i + EXPIRE}" token = encrypt(token_txt) diff --git a/src/cloud/common/CloudAuth.rb b/src/cloud/common/CloudAuth.rb index 859e4bea39..dbc6e51b05 100644 --- a/src/cloud/common/CloudAuth.rb +++ b/src/cloud/common/CloudAuth.rb @@ -14,6 +14,8 @@ # limitations under the License. # #--------------------------------------------------------------------------- # +require 'server_cipher_auth' + class CloudAuth AUTH_MODULES = { "basic" => 'BasicCloudAuth', @@ -32,12 +34,15 @@ class CloudAuth else raise "Auth module not specified" end + + @server_auth = ServerCipherAuth.new end protected def get_password(username) - @oneadmin_client ||= OpenNebula::Client.new(nil, @conf[:one_xmlrpc]) + token = @server_auth.login_token + @oneadmin_client ||= OpenNebula::Client.new(token, @conf[:one_xmlrpc]) if @user_pool.nil? @user_pool ||= OpenNebula::UserPool.new(@oneadmin_client) diff --git a/src/cloud/common/CloudAuth/BasicCloudAuth.rb b/src/cloud/common/CloudAuth/BasicCloudAuth.rb index 83add2ef35..ae61eed91e 100644 --- a/src/cloud/common/CloudAuth/BasicCloudAuth.rb +++ b/src/cloud/common/CloudAuth/BasicCloudAuth.rb @@ -24,7 +24,7 @@ module BasicCloudAuth one_pass = get_password(username) if one_pass && one_pass == Digest::SHA1.hexdigest(password) - @token = "#{username}:#{password}" + @token = @server_auth.login_token(username) @client = Client.new(@token, @conf[:one_xmlrpc]) return nil else diff --git a/src/cloud/common/CloudAuth/EC2CloudAuth.rb b/src/cloud/common/CloudAuth/EC2CloudAuth.rb index 926f96674a..97ee258976 100644 --- a/src/cloud/common/CloudAuth/EC2CloudAuth.rb +++ b/src/cloud/common/CloudAuth/EC2CloudAuth.rb @@ -36,7 +36,7 @@ module EC2CloudAuth end end - @token = "#{username}:#{one_pass}" + @token = @server_auth.login_token(username) @client = Client.new(@token, @conf[:one_xmlrpc]) return nil end