如何在WP8应用中安全的使用Azure Blob存储

在前面一篇文章中,我们演示了在Windows store应用中安全的使用Azure Blob存储的步骤。Windows Phone上的步骤与此类似,只是在客户端代码以及设置方面有一些区别。但是为了方便读者阅读,我这里将就Windows Phone应用中如何安全的使用Azure Blob存储单独写一遍。这样对于Windows Phone开发者来说,只需要看这篇文章就够了。 我们已经在这篇文章中演示了在Windows Phone应用中使用Azure Blob存储的基本步骤,但是,对于一个商业应用来说,保证数据的安全性是很重要的一环。上次文章的代码中,对Blob的访问权限是通过PublicAccess来控制的,理论上如果PublicAccess设置为OFF,那么第三方就应该无法访问该Blob。但是这里有一个明显的安全隐患:我们的代码中明文存储了Access Key字符串,而通过一些反编译工具第三方能够很容易的获得这个字符串。如果这个Access Key被暴露的话,那么Blob中的内容就毫无秘密可言了。为此,我们需要找到一个可靠的办法来保证验证信息的安全。 为了解决这个问题,我们需要做到以下两条: 1.保证用户在未经授权的情况下无法获得验证信息。 2.用户通过授权后获得的验证信息不能被重复使用。 对于第一条,我们可以自己建立一个服务器,与该服务器的连接需要先进行身份验证,然后从服务器上获得用于连接Windows Azure 存储服务的验证信息。不过我们既然已经使用了Windows Azure,那么完全可以使用Windows Azure  云服务来为我们做同样的事情。 对于第二条,Windows Azure 存储服务提供了共享访问签名(Shared Access Signature)来保证验证信息的时效性。共享访问签名是一个在特定时间间隔内授予容器、Blob以及其他存储对象受限访问权限的 URI。也就是说,共享访问签名是一个URI, 客户端通过这个URI能够在规定时间内访问容器和Blob, 而超过了时间段的话这个URI就无效了,需要重新获取。 结合这两种方式,那么我们就能够实现对验证信息的保护了。我们将生成共享访问签名的代码放在Windows Azure云服务上,客户端通过访问云服务接口获得共享访问签名来访问Windows Azure存储服务商的Blob。 那么让我们来看看如果要安全的实现与前一篇文章相同的功能所需要完成的步骤。 一.   创建云服务并实现服务接口: 1. 从以下链接下载并安装Azure Cloud Service SDK For .NET: http://www.windowsazure.com/en-us/downloads/?sdk=net 针对不同的Visual Studio版本,您需要安装相应的SDK,这样在您的Visual Studio的项目模板中会出现Azure Cloud Service的模板。 2. 通过Azure Cloud Service模板创建一个Cloud服务,在项目向导中加入WCF Service Web Role:  …

0

如何在Windows store应用中安全的使用Azure Blob存储(2)

三. 进一步提高WCF Service的可靠性和安全性 我们已经实现了对Windows Azure上Blob数据的安全存取。但是这还不足以应用到生产环境。在生产环境,我们还需要保证WCF Service的高可靠性。设置服务器的负载均衡是一个很好的解决办法。下面就让我们来介绍一下如何修改WCFServiceWebRole1的设定以实现负载均衡。 1.在Cloud Service项目WindowsAzure1的Roles文件夹中,右键点击WCFServiceWebRole1选择Properties打开属性页。   2.在Configuration页面中将Instance count设为2或更多,Windows Azure会该为Cloud Service创建相应数目虚拟机做负载平衡。这样如果其中一台虚拟机出问题的时候其他虚拟机还能继续服务,从而保证了服务的稳定性。   另外,第三方还有可能通过抓包的方式来获取身份验证及数据信息,虽然因为我们使用了共享访问签名,可以设置该身份验证信息的有效时间,但还是可能形成隐患。为了避免这种情况,我们需要实现与Windows Azure的https连接。由于客户端和Storage Service的连接已经是https的了,所以这里只需要关心客户端和Cloud Service的连接设置。下面就是设定与Cloud Service的通讯为https连接的步骤: 1.为了采用https连接,我们需要一张SSL证书。而在实际生产环境中,您需要使用一张受信任的证书或者公司颁发的证书。出于演示目的,这里我使用了一张自签名的证书,在Developer Command Prompt for VS2013中以管理员身份运行makecert命令可以帮助我们创建一张自签名证书: C:\>makecert -r -pe -n CN=”sasservice.cloudapp.net ” -b 03/13/2014 -e 03/13/2015 -eku 1.3.6.1.5.5.7.3.1 -sky exchange -sp “Microsoft RSA SChannel Cryptographic Provider” -sy 12 -sv sasCert.pvk sasCert.cer 2.期间您需要设定并输入私钥的保护口令。生成的证书包含两个文件,一个是pvk文件,用于存储证书私钥,一个是cer文件,用于存储证书公钥。关于如何使用makecert命令的详细信息,您可以参考以下链接: http://msdn.microsoft.com/zh-cn/library/bfsktky3(v=vs.110).aspx 3.接下来您需要用pvk2pfx命令生成pfx文件以供后用: C:\>pvk2pfx -pvk sasCert.pvk  -pi…

0

如何在Windows store应用中安全的使用Azure Blob存储(1)

在上一篇文章中,我们演示了在Windows store应用中使用Azure Blob存储的基本步骤,但是,对于一个商业应用来说,保证数据的安全性是很重要的一环。上一篇文章的代码中,对Blob的访问权限是通过PublicAccess来控制的,理论上如果PublicAccess设置为OFF,那么第三方就应该无法访问该Blob。但是这里有一个明显的安全隐患:我们的代码中明文存储了Access Key字符串,而通过一些反编译工具第三方能够很容易的获得这个字符串。如果这个Access Key被暴露的话,那么Blob中的内容就毫无秘密可言了。为此,我们需要找到一个可靠的办法来保证验证信息的安全。 为了解决这个问题,我们需要做到以下两条: 1.保证用户在未经授权的情况下无法获得验证信息。 2.用户通过授权后获得的验证信息不能被重复使用。 对于第一条,我们可以自己建立一个服务器,与该服务器的连接需要先进行身份验证,然后从服务器上获得用于连接Windows Azure 存储服务的验证信息。不过我们既然已经使用了Windows Azure,那么完全可以使用Windows Azure  云服务来为我们做同样的事情。 对于第二条,Windows Azure 存储服务提供了共享访问签名(Shared Access Signature)来保证验证信息的时效性。共享访问签名是一个在特定时间间隔内授予容器、Blob以及其他存储对象受限访问权限的 URI。也就是说,共享访问签名是一个URI, 客户端通过这个URI能够在规定时间内访问容器和Blob, 而超过了时间段的话这个URI就无效了,需要重新获取。 结合这两种方式,那么我们就能够实现对验证信息的保护了。我们将生成共享访问签名的代码放在Windows Azure云服务上,客户端通过访问云服务接口获得共享访问签名来访问Windows Azure存储服务商的Blob。 那么让我们来看看如果要安全的实现与前一篇文章相同的功能所需要完成的步骤。 一.   创建云服务并实现服务接口: 1. 从以下链接下载并安装Azure Cloud Service SDK For .NET: http://www.windowsazure.com/en-us/downloads/?sdk=net 针对不同的Visual Studio版本,您需要安装相应的SDK,这样在您的Visual Studio的项目模板中会出现Azure Cloud Service的模板。 2. 通过Azure Cloud Service模板创建一个Cloud服务,在项目向导中加入WCF Service Web Role:   完成后项目向导会自动建立两个项目,一个是Cloud Service项目WindowsAzure1,另一个是提供WCF Service的Web Role项目WCFServiceWebRole1。WCFServiceWebRole1中会生成一个名为IService1的接口及实现该接口Service1类。   3.  修改WCFServiceWebRole1项目中的IService1接口添加用于获取共享访问签名的接口函数:…

0

如何在Windows phone 应用中使用Azure Blob存储

前面一片文章介绍了如何在Windows Store应用中如何使用Azure Blob存储。实际上,该文章的大部分内容对Windows Phone应用也适用。但是由于部分API在两个平台有不同,步骤和示例代码在Windows Phone上需要做一定的修改。为了便于大家学习,在这篇文章中,我就专门来介绍如何在Windows Phone应用中使用Windows Azure Storage Blob来存放图片,文档等二进制大型对象: 一.安装Azure Storage客户端库 理论上,您可以直接使用REST API来访问Azure Storage。但是在实践中这样实现需要完成大量代码。为了能够在windows store应用中方便的使用Azure Blob存储,我们提供了针对Windows Store应用的Azure Storage客户端库。安装客户端库可以有几种办法: 1.可以从以下链接下载获得客户端库: http://blogs.msdn.com/b/windowsazurestorage/archive/2013/09/07/announcing-storage-client-library-2-1-rtm.aspx 然后,首先使用Visual Studio 2013的模板创建一个Windows Phone应用项目,再通过“添加引用”添加客户端库。     2.上述办法获得的客户端库是2.1版本的,如果您想获得最新发布的客户端库,也可以采用第二种办法,使用Visual Studio 2013的模板创建一个Windows Phone应用项目,然后点击Tools->Nuget Package Manager->Package Manager Console,运行以下命令: Install-Package WindowsAzure.Storage-Preview –Pre 需要注意的是,在“Project->Manage NuGet Packages”中也可以找到Azure Storage客户端库,但是这是获得的是针对.Net的版本而不是Windows store应用的,所以不能通过这种方式安装。 3.客户端库的代码是完全开源的,如果您想尝试最新的代码的话,也可以下载客户端库的源代码后自己编译使用: https://github.com/WindowsAzure/azure-storage-net 然后再按照办法一添加客户端库。 二.配置Azure Storage云端           为了使用Azure storage,您首先需要在Azure上创建一个存储账号,该账号用以提供访问该存储服务所需的信息。下面是创建存储账号所需要的步骤: 1.使用Windows Azure账号登录进入Azure管理门户: https://manage.windowsazure.com/ 如果您还没有Windows Azure的账号,那么这里提供了两种办法来免费试用Windows…

0

如何在Windows store 应用中使用Azure Blob存储

随着Windows Azure在中国的落地,原来许多需要自己维护服务器才能完成的工作我们都可以交给Windows Azure来完成,而且更经济更方便。在下面这篇文章中,我们就一步一步的来介绍如何在Windows store应用中使用Windows Azure Storage Blob来存放图片,文档等二进制大型对象: 一.安装Azure Storage客户端库 理论上,您可以直接使用REST API来访问Azure Storage。但是在实践中这样实现需要完成大量代码。为了能够在windows store应用中方便的使用Azure Blob存储,我们提供了针对Windows Store应用的Azure Storage客户端库。安装客户端库可以有几种办法: 1.可以从以下链接下载获得客户端库: http://blogs.msdn.com/b/windowsazurestorage/archive/2012/11/05/windows-azure-storage-client-library-for-windows-runtime.aspx 然后,首先使用Visual Studio 2013的模板创建一个Windows store应用项目,再通过“添加引用”添加客户端库。     2.上述办法获得的客户端库是2.0版本的,如果您想获得最新发布的客户端库,也可以采用第二种办法,使用Visual Studio 2013的模板创建一个Windows store应用项目,然后点击Tools->Nuget Package Manager->Package Manager Console,运行以下命令:    Install-Package WindowsAzure.Storage-Preview –Pre 需要注意的是,在“Project->Manage NuGet Packages”中也可以找到Azure Storage客户端库,但是这是获得的是针对.Net的版本而不是Windows store应用的,所以不能通过这种方式安装。 3.客户端库的代码是完全开源的,如果您想尝试最新的代码的话,也可以下载客户端库的源代码后自己编译使用: https://github.com/WindowsAzure/azure-storage-net 然后再按照办法一添加客户端库。 二.配置Azure Storage云端           为了使用Azure storage,您首先需要在Azure上创建一个存储账号,该账号用以提供访问该存储服务所需的信息。下面是创建存储账号所需要的步骤: 1.使用Windows Azure账号登录进入Azure管理门户: https://manage.windowsazure.com/ 如果您还没有Windows Azure的账号,那么这里提供了两种办法来免费试用Windows Azure服务:…

0