1

我一直在努力设置一个利用服务管理 API 的 iOS (Objective-C) 应用程序。我已经成功地让存储 API 调用正常工作,但从我所读到的内容来看,两个 Azure API 之间的一大区别似乎是身份验证问题。作为参考,我最想做的是设置一个简单的 API 调用来列出应用程序中的托管服务帐户(最终适用于公共部署)。

根据 API Azure 文档,服务管理 API 需要上传管理证书 (.cer),然后客户端才能使用该证书对请求进行身份验证。我的预感是,这将阻止像我想要创建的应用程序以任何方式可行,因为具有包含已下载应用程序的设备的公共用户将不具有该证书或以编程方式将其附加到目标 c 中的能力代码。

我的预感是否正确?这是一个不应该追求的荒谬想法吗?我认为要使这成为可能,用户将需要以某种方式将其设备的证书文件上传到 Azure,然后以某种方式让应用程序使用此证书进行身份验证。即使有可能,我什至不知道从哪里开始。:(

任何有用的信息将不胜感激。我在 iOS 方面有很多经验,但特别是在这种类型的身份验证/证书方面,不幸的是我的经验很少。

提前致谢!!-文森特

4

2 回答 2

1

实际上,我有一个应用程序可以完全满足您的要求。 CloudTools for Windows Azure是一个 iOS 应用程序,它使用 Azure 管理服务 API 来执行 Azure 管理。它在 iTunes 上已经存在一年多了。

你的问题有点笼统,但我可以告诉你,证书问题是迄今为止设计/开发应用程序的最大问题。您不能将证书存储在钥匙串中,因为钥匙串的工作方式如下:a)您请求需要证书的远程 URL;b)该网址告诉您它需要证书,并且 c)钥匙串提供了适当的证书。这是一个多请求过程。这不适用于 Azure,因为 Azure 服务管理 API 期望初始调用包含证书。

I require the users to add their certificate through iTunes File Sharing (steps here). Of course, they have to upload the public key portion to Azure. Then, I provide the certificate and private key with each request. I use the HTTP library ASIHttpRequest, although I believe that the latest (iOS 5.x) Apple libraries have similar functionality.

I'd be happy to provide any further details if you have any follow-up questions.

于 2012-06-14T18:08:36.950 回答
0

对于 Windows Azure,如果您使用的是服务管理 API,那么您确实需要基于证书的身份验证来在请求连接的计算机和 Windows Azure 管理门户之间创建 SSL 隧道。我不确定您的 iOS 应用程序分布范围有多广。

我的第一个想法是为什么要从 iOS 应用程序部署 Windows Azure 应用程序,你要在 iOS 设备中构建应用程序并进行部署吗?Windows Azure 应用程序部署主要在客户端机器上完成,因此,iOS 上的 Azure 应用程序管理是个好主意,但是从 iOS 部署应用程序不知道为什么。可能是你在这里做大事。在这两种情况下,你真的需要 iOS 设备上的服务管理证书。如果是企业应用,可以让用户安装 Service Management 证书,iOS 设备使用 Service Mgmt API 会更容易。

因此,如果您想从客户端 iOS 应用程序使用服务管理 API,我认为最好的解决方案是将 WCF 服务托管在 Windows Azure 中,该服务被配置为直接连接到您的 Windows Azure 门户。从您的 iOS 应用程序中,您只需调用您的 WCF 服务。这是从任何客户端应用程序(WP7、iOS、Android)访问服务管理 API(通过 WCF 服务)的非常流行的方法,并且客户端代码非常轻量。另一方面,您可能需要付费才能在 Windows Azure 上托管 WCF 服务。

于 2012-06-13T16:51:21.887 回答