我一直在努力设置一个利用服务管理 API 的 iOS (Objective-C) 应用程序。我已经成功地使存储 API 调用正常工作,但从我所读到的内容来看,两个 Azure API 之间的一个很大的区别似乎是身份验证问题。作为引用,我理想中想做的是设置一个简单的 API 调用来列出应用程序中的托管服务帐户(最终适合公共(public)部署)。
根据 API Azure 文档,服务管理 API 需要上传管理证书 (.cer),然后客户端才能利用该证书对请求进行身份验证。我的预感是,这将阻止像我想创建的应用程序以任何方式变得可行,因为拥有包含下载的应用程序的设备的公共(public)用户将不具有该证书或无法以编程方式将其附加到 Objective-c 中代码。
我的预感正确吗?这是一个不应该追求的绝望想法吗?我认为要实现这一点,用户需要以某种方式将其设备的证书文件上传到 Azure,然后以某种方式让应用程序使用此证书进行身份验证。即使有可能,我也有点不知道从哪里开始。 :(
任何有用的信息将不胜感激。我在 iOS 方面有很多经验,但不幸的是,特别是在这种类型的身份验证/证书方面,我的经验很少。
提前致谢!! -文森特
最佳答案
实际上,我有一个应用程序可以完全实现您所说的功能。 CloudTools for Windows Azure是一个使用 Azure 管理服务 API 执行 Azure 管理的 iOS 应用程序。它已在 iTunes 上发布一年多了。
您的问题有点宽泛,但我可以告诉您,证书问题是迄今为止设计/开发应用程序中最大的问题。您不能将证书存储在 keychain 中,因为 keychain 的工作方式如下: a) 您请求需要证书的远程 url; b) 该 url 告诉您它需要一个证书,并且 c) 钥匙串(keychain)提供了适当的证书。这是一个多请求过程。这对于 Azure 来说不起作用,因为 Azure 服务管理 API 期望初始调用包含证书。
我要求用户通过 iTunes 文件共享 (steps here) 添加证书。当然,他们必须将公钥部分上传到Azure。然后,我为每个请求提供证书和私钥。我使用 HTTP 库 ASIHttpRequest ,尽管我相信最新的(iOS 5.x)Apple 库具有类似的功能。
如果您有任何后续问题,我很乐意提供任何进一步的详细信息。
关于objective-c - iOS 应用程序使用 Windows Azure 服务管理 API 的可行性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017390/