Sorry, my bad. Wrong formatting of auth_dict (tenantId should not be a key for the value of passwordCredentials
** Changed in: keystone Status: New => Invalid -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to Keystone. https://bugs.launchpad.net/bugs/1133148 Title: Keystone return different-length keys while creating request body manually and when creating request by json.dumps Status in OpenStack Identity (Keystone): Invalid Bug description: The gettoken() function is given at the last. While calling the function, I just changed params = authstring to params = authstring2 for the two executions given below root@ubuntu:~# python -i gettoken.py >>> gettoken() {"auth": {"passwordCredentials": {"username": "demo", "password": "nova", "tenantId": "44a4a190db80429985528e24ca811a28"}}} u'MIIKkgYJKoZIhvcNAQcCoIIKgzCCCn8CAQExCTAHBgUrDgMCGjCCCWsGCSqGSIb3DQEHAaCCCVwEgglYeyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wMi0yNlQwNjo0OToyNC40MTY3NzIiLCAiZXhwaXJlcyI6ICIyMDEzLTAyLTI3VDA2OjQ5OjI0WiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImVuYWJsZWQiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiBudWxsLCAibmFtZSI6ICJkZW1vIiwgImlkIjogIjQ0YTRhMTkwZGI4MDQyOTk4NTUyOGUyNGNhODExYTI4In19LCAic2VydmljZUNhdGFsb2ciOiBbeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTAuNjMuMTY1LjIyOjg3NzQvdjIvNDRhNGExOTBkYjgwNDI5OTg1NTI4ZTI0Y2E4MTFhMjgiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTAuNjMuMTY1LjIyOjg3NzQvdjIvNDRhNGExOTBkYjgwNDI5OTg1NTI4ZTI0Y2E4MTFhMjgiLCAiaWQiOiAiNWE0MmZjODUwZTFiNDVhY2FjMjViN2YxOWEyMjUzZWIiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6ODc3NC92Mi80NGE0YTE5MGRiODA0Mjk5ODU1MjhlMjRjYTgxMWEyOCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJjb21wdXRlIiwgIm5hbWUiOiAibm92YSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6MzMzMyIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6MzMzMyIsICJpZCI6ICI2OGQ0NWMxYzViZGM0MWRmOWVmMGVhOTk0MTI2ZjMwYyIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzEwLjYzLjE2NS4yMjozMzMzIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInMzIiwgIm5hbWUiOiAiczMifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTAuNjMuMTY1LjIyOjkyOTIiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTAuNjMuMTY1LjIyOjkyOTIiLCAiaWQiOiAiNTI0N2U3Y2I4ZTkzNDYyZmEwMTdjYjA1Mzk0NTdjMGQiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6OTI5MiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpbWFnZSIsICJuYW1lIjogImdsYW5jZSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6ODc3Ni92MS80NGE0YTE5MGRiODA0Mjk5ODU1MjhlMjRjYTgxMWEyOCIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6ODc3Ni92MS80NGE0YTE5MGRiODA0Mjk5ODU1MjhlMjRjYTgxMWEyOCIsICJpZCI6ICIzMWM3MWU4ZTQ5MmY0MDQ4OWI0NDVkYzkwZWRjM2NhZiIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzEwLjYzLjE2NS4yMjo4Nzc2L3YxLzQ0YTRhMTkwZGI4MDQyOTk4NTUyOGUyNGNhODExYTI4In1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInZvbHVtZSIsICJuYW1lIjogImNpbmRlciJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6ODc3My9zZXJ2aWNlcy9BZG1pbiIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6ODc3My9zZXJ2aWNlcy9DbG91ZCIsICJpZCI6ICI3ZjljYTMzZjZjZTk0NDEwYjY4YjNiZjlmYzA5NjA0NSIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzEwLjYzLjE2NS4yMjo4NzczL3NlcnZpY2VzL0Nsb3VkIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogImVjMiIsICJuYW1lIjogImVjMiJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6MzUzNTcvdjIuMCIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMC42My4xNjUuMjI6NTAwMC92Mi4wIiwgImlkIjogIjI0ODdmYzg1ZTc2MTQzOGU4MDJiOThiY2EwMDFkYmE5IiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTAuNjMuMTY1LjIyOjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm5hbWUiOiAiZGVtbyIsICJyb2xlc19saW5rcyI6IFtdLCAiaWQiOiAiNzg3YzRlZDRlNmQ0NDhhZTkyYmE1MGM4MTI5YjVhMTYiLCAicm9sZXMiOiBbeyJuYW1lIjogImFub3RoZXJyb2xlIn0sIHsibmFtZSI6ICJNZW1iZXIifV0sICJuYW1lIjogImRlbW8ifSwgIm1ldGFkYXRhIjogeyJpc19hZG1pbiI6IDAsICJyb2xlcyI6IFsiZWVmYWYwNDcxNDhjNDA0OGJhYWY3OTRmYzBmYTUxN2MiLCAiMTEzZWY4YzY5YjZiNGMxYzliMDUzZWZkY2U0ZThhMzUiXX19fTGB-zCB-AIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVVbnNldDEOMAwGA1UEBxMFVW5zZXQxDjAMBgNVBAoTBVVuc2V0MRgwFgYDVQQDEw93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEgYBjOvtn8VK77k-JFVBxvv-7mYeDw+Zx3BO8pMZ3SoZ-93t7RqO9I5gJ8oyE8pRRzzncJ2+NikRbehjbUcpwS9Fx4hooZz-QBrQHYkJBNaVLPX2WrD6-GpRiVNZQXaK1ai6Jf4zREuFcMR7cJHWrdj4icZqMHd0N+52lJgjZkHorEQ==' >>> root@ubuntu:~# python -i gettoken.py >>> gettoken() {"auth": {"passwordCredentials": {"username": "demo", "password": "nova", "tenantId": "44a4a190db80429985528e24ca811a28"}}} u'MIICbAYJKoZIhvcNAQcCoIICXTCCAlkCAQExCTAHBgUrDgMCGjCCAUUGCSqGSIb3DQEHAaCCATYEggEyeyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wMi0yNlQwNjo0OTo1Mi41Njk0MDQiLCAiZXhwaXJlcyI6ICIyMDEzLTAyLTI3VDA2OjQ5OjUyWiIsICJpZCI6ICJwbGFjZWhvbGRlciJ9LCAic2VydmljZUNhdGFsb2ciOiBbXSwgInVzZXIiOiB7InVzZXJuYW1lIjogImRlbW8iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjc4N2M0ZWQ0ZTZkNDQ4YWU5MmJhNTBjODEyOWI1YTE2IiwgInJvbGVzIjogW10sICJuYW1lIjogImRlbW8ifSwgIm1ldGFkYXRhIjogeyJpc19hZG1pbiI6IDAsICJyb2xlcyI6IFtdfX19MYH-MIH8AgEBMFwwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgTBVVuc2V0MQ4wDAYDVQQHEwVVbnNldDEOMAwGA1UEChMFVW5zZXQxGDAWBgNVBAMTD3d3dy5leGFtcGxlLmNvbQIBATAHBgUrDgMCGjANBgkqhkiG9w0BAQEFAASBgNgU3DzesRo8gaFJgM+wsfR3XxgmHc5C9rP1Idnoyk-nzXfztLzMUOqPm5k4LquhZtpOttOmKUqABiio1e9EZjSJi1q4OjFck0gKWf12KMY40CCXbxCOyKiajM0PPzA3fxxjp4Ov9jYPBxtH41WjDn7w2OyipArTR2DQ72YVkkE6' >>> The gettoken function is here def gettoken(): url = "x.x.x.x:5000" osuser = "demo" ospassword = "nova" tenant_id = "44a4a190db80429985528e24ca811a28" auth_string2 = ('{"auth":{"passwordCredentials":{"username": "%(osuser)s", ' '"password":"%(ospassword)s"}, "tenantId":"%(tenant_id)s"}}') auth_dict = {"auth": {"passwordCredentials": { "username": osuser, "password": ospassword, "tenantId": tenant_id } } } auth_string = json.dumps(auth_dict) print auth_string params = auth_string % locals() headers = {"Content-Type": "application/json"} conn = httplib.HTTPConnection(url) conn.request("POST", "/v2.0/tokens", params, headers) # HTTP response response = conn.getresponse() data = response.read() datadict = json.loads(data) conn.close() # print '\ndatadict:', datadict token = datadict['access']['token']['id'] return token To manage notifications about this bug go to: https://bugs.launchpad.net/keystone/+bug/1133148/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp