在softlayer Rest调用中如何处理"@" [英] how is '@' handled in the softlayer Rest calls
问题描述
我的用户ID"12345_name@company.com"中有一个'@',当在Rest Call中传递时,这会导致错误"Softlayer Access Denied".
{ "error":访问被拒绝.", "code":"SoftLayer_Exception_Public"
}
请提出解决此问题的方法. 如果可以,我们可以使用别名代替"12345_name@company.com"用户吗?
以下是我要拨打的其余电话.
https://12345_name@company.com :@ api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests.json?objectMask = mask [主机名;域; id; startCpus; maxCpuUnits; powerState;数据中心[name,longName]; maxMemory; powerState; createDate; hourlyBillingFlag; averageDailyPublicBandwidthUsage; billingItem [id,item [id,description] category [name,id],children [id,item [id,description],category [id,name]]]; networkComponents [状态,ipAddressBindings.ipAddress,id,networkId,primaryIpAddress,端口,最大速度]; networkVlans [subnets [ networkIdentifier,networkVlan.primaryRouter.hostname,cidr,网关,id,网络掩码,地址空间,networkVlanId,routingTypeName]]]
有时为了避免使用特殊字符,有必要使用"基本身份验证",在这种情况下,您需要对用户名进行编码和apiKey,例如:
- 用户名::123123_ruber@softlayer.com
- apiKey::375f50232aaba2d002eca7bc5e9dc4f6a042a8a65982254df8
您需要编码:
- 用户名空间 apiKey
- 123123_ruber@softlayer.com 375f50232aaba2d002eca7bc5e9dc4f6a042a8a65982254df8
我推荐使用的一种编码工具: https://www.base64encode.org/
此处的示例编码为:
MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZjp>
有必要在编码的凭据之前添加基本字
基本MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZ>
然后,您可以像下面的示例一样添加"授权"作为标题(我使用了用于Chrome的Advanced Rest Client):
I have an '@' in my user id "12345_name@company.com" , this when passed in the Rest Call is causing the error "Softlayer Access Denied" .
{ "error": "Access Denied. ", "code": "SoftLayer_Exception_Public"
}
Please suggest ways to get around this. Can we use an Alias instead of the "12345_name@company.com" user if.
Below is the Rest call I am trying to make.
https://12345_name@company.com:@api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests.json?objectMask=mask[hostname;domain;id;startCpus;maxCpuUnits;powerState;datacenter[name,longName];maxMemory;powerState;createDate;hourlyBillingFlag;averageDailyPublicBandwidthUsage;billingItem[id,item[id,description],category[name,id],children[id,item[id,description],category[id,name]]];networkComponents[status,ipAddressBindings.ipAddress,id,networkId,primaryIpAddress,port,maxSpeed];networkVlans[subnets[networkIdentifier,networkVlan.primaryRouter.hostname,cidr,gateway,id,netmask,addressSpace,networkVlanId,routingTypeName]]]
Sometimes it's necessary to use "Basic Authentication" in order to avoid special characters, in that case, you need to encode your username and apiKey, for example:
- username: 123123_ruber@softlayer.com
- apiKey: 375f50232aaba2d002eca7bc5e9dc4f6a042a8a65982254df8
you need to encode:
- username space apiKey
- 123123_ruber@softlayer.com 375f50232aaba2d002eca7bc5e9dc4f6a042a8a65982254df8
A tool I can recommend for encoding: https://www.base64encode.org/
Here the example encoded:
MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZjg=
It's necessary to add Basic word before the credentials encoded
Basic MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZjg=
Then you can add "authorization" as a header like the following example (I used Advanced Rest Client for Chrome):
这篇关于在softlayer Rest调用中如何处理"@"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!