incubator-cloudstack-users-cn mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gavin Lee <gavin....@gmail.com>
Subject Re: 也请教大家一个api的问题
Date Tue, 25 Dec 2012 14:40:35 GMT
通过8096端口是直接调用API了, 没有鉴权和认证的过程, 你可以去掉请求中的apiKey和signature再试试,结果一样,
使用这种方式需要自己保证安全性.全局配置端口默认为0, 表示不通过直接API调用提供服务.

通过8080端口访问是需要提供APIKey和Signature,
其中Signature是由SecretKey及请求的参数一起通过HmacSHA1编码得到的,每一个请求都会有一个单独的Signature,
因些安全性很好, 下列是代码片段:
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec keySpec = new SecretKeySpec(secretkey.getBytes(),"HmacSHA1");
mac.init(keySpec);
mac.update(request.getBytes());byte[] encryptedBytes =
mac.doFinal();//System.out.println("HmacSHA1 hash: " +
encryptedBytes);
return Base64.encodeBase64String(encryptedBytes);

需要注意的是第二种最终仍然统一调用到API Server提供的服务.





2012/12/25 Royal Yang <rayang2004@gmail.com>:
> 请问大家请求
>
> http://localhost:8096?apiKey=aaaa&command=listRouters&response=json&state=Running&signature=aaaaa
> "
>
> 和请求
> http://localhost:8080/client/api?apiKey=aaaa&command= listRouters&
> response=json&state=Running &signature=aaaaa"
>
> 有啥区别?
>
> 为啥我用上面的url就能获取到正确的vrouter信息,后者就列不出?(apikey和signatrue已编辑)



-- 
Gavin
Mime
View raw message