softlayer api用户密码更新

时间:2016-11-22 17:40:26

标签: ibm-cloud-infrastructure

我正在尝试使用SoftLayer API Rest方法来更新用户VPN密码,但没有运气。我必须正确地构建我的呼叫,并希望有人有一个工作示例或输入我的呼叫失败的原因。我尝试了很多方法,但没有运气。我正在使用的api用户具有所需的私有级别,我的密钥有效(适用于其他方法等)。我的方法是:

def set_user_vpn_password(self):
    ''' method to set a user's vpn password '''

    myPass = { "password" : "P@s$w0rd!?" }

    r = requests.post('https://<priv api account>:<api key>@api.softlayer.com/rest/v3/SoftLayer_User_Customer/<softlayer uid>/updateVpnPassword', json=myPass)
    print(r.text)
    pp(r)
    pp(r.json())

产生的错误是:

{"error":"ERR_USER_CUSTOMER_PASSWORD_COMPLEXITY_FAILED","code":"SoftLayer_Exception"}
<Response [500]>
{u'code': u'SoftLayer_Exception',
 u'error': u'ERR_USER_CUSTOMER_PASSWORD_COMPLEXITY_FAILED'}

我不相信我在密码政策方面遗漏了任何关于复杂性的内容 - 我尝试了不同的字符串无济于事。如您所见,我正在使用Python请求模块。

1 个答案:

答案 0 :(得分:0)

关于复杂性的密码策略是好的。问题是SoftLayer在请求中使用了这种主体:

{
  "parameters": [] 
}

有时请求需要一个对象或整数或字符串,在这种情况下,所以正确的REST请求将是:

{
    "parameters": ["P@s$w0rd!?"]
}

这是一个使用SoftLayer python客户端的python示例:

"""
Update VPN password.

Important manual pages:
http://sldn.softlayer.com/reference/services/SoftLayer_User_Customer/updateVpnPassword
https://sldn.softlayer.com/article/Python

License: http://sldn.softlayer.com/article/License
Author: SoftLayer Technologies, Inc. <sldn@softlayer.com>
"""
import SoftLayer
import pprint

"""
Your SoftLayer API username and key
"""
USERNAME = 'set me'
API_KEY = 'set me'

# Create a SoftLayer API client object
client = SoftLayer.Client(username=USERNAME,
                          api_key=API_KEY)
userService = client['SoftLayer_User_Customer']

user_id = 205571
updated_password = 'P@s$w0rd!?'

try:
    result = userService.updateVpnPassword(updated_password, id=user_id)
    pprint.pprint(result)
except SoftLayer.SoftLayerAPIError as e:
    print(('Unable to update password faultCode=%s, faultString=%s'
    % (e.faultCode, e.faultString)))