Windows Azure服务管理请求验证

安全性考虑与设计,Windows Azure的服务请求必须通过安全认证,验证的方式有两种如下:

1.Authenticate using Azure Active Directory(活动目录验证)

Secure requests to the management service can be authenticated by creating an Azure AD application and using the Active Directory Authentication Library to obtain an access token from the application.

a.Sign in to the Azure Management Portal.

b.Towards the bottom of the left menu, click Active Directory, and then click Default Directory.

c.On the Default Directory page, under Integrate applications, click Add an application you’re developing.

d.Enter the name of the application, select NATIVE CLIENT APPLICATION, and then click the right arrow.

e.Enter a URI for the application and then click the checkmark. The URI includes the name of the application that is preceded by http://localhost/.

f.After the application is created, you must add permission for the application to access the Service Management APIs. Go to the page for your application, and then click Configure.

g.In the Permissions to other applications section at the bottom of the configuration page, click Select application, and then select Windows Azure Service Management API.

h.Click Delegated Permissions: 0, and then select Access Azure Service Management.

i.Click Save on the bottom menu.

You can easily install the Active Directory Authentication Library into your Visual Studio project by using the NuGet package. To install the package, do the following:

1.Right-click the project name in the Solution Explorer, and then click Manage NuGet Packages.

2.Type Active Directory in the search box, click Install for the Active Directory Authentication Library package, and then follow the instructions to install the package.

下面代码范例演示如何进行访问控制:

private static string GetAuthorizationHeader()
{
  AuthenticationResult result = null;
  
  var context = new AuthenticationContext("https://login.windows.net/{tenantId}");

  var thread = new Thread(() =>
  {
    result = context.AcquireToken(
      "https://management.core.windows.net/",
      "{clientId}",
      new Uri("{redirectUri}"));
  });

  thread.SetApartmentState(ApartmentState.STA);
  thread.Name = "AquireTokenThread";
  thread.Start();
  thread.Join();
            
  if (result == null)
  {
    throw new InvalidOperationException("Failed to obtain the JWT token");
  }

  string token = result.AccessToken;
  return token;
}

  3.

{tenantId} with the GUID of the application. To find the GUID, go to the Default Directory page in the Active Directory section of the Management Portal, select the application that you previously created, and then click View Endpoints.

4.Copy the GUID of the application and replace the placeholder with it.

{clientId} with the client identifier. To find the client identifier, go to the Configuration page of the application in the Management Portal.

Use the following line of code to assign the token that is returned from the GetAuthorizationHeader method shown above to a variable that can be used by the request:

string token = GetAuthorizationHeader();

Use the following lines of code to add the token to a request:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);

2.Authenticate using a management certificate(管理证书验证)

在说管理证书验证之前要先说一下以下两点:

a.The Service Management API does not verify that a certificate is still valid. Authentication will succeed against an expired certificate.

b.All management certificates carry the same set of privileges. There is no notion of “role-based” authentication where one management certificate can be configured in one role and another on the same subscription is configured in a different role.

如上面所展示:同一个订阅ID号有多个指纹,通过指纹就可以找到对应的管理证书进行验证;代码如下:

private static X509Certificate2 GetStoreCertificate(string thumbprint)
{
  List<StoreLocation> locations = new List<StoreLocation>
  { 
    StoreLocation.CurrentUser, 
    StoreLocation.LocalMachine
  };  
  foreach (var location in locations)
  {
    X509Store store = new X509Store("My", location);    try
    {
      store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
      X509Certificate2Collection certificates = store.Certificates.Find(
        X509FindType.FindByThumbprint, thumbprint, false);      if (certificates.Count == 1)
      {       
       return certificates[0];
      }
    }    finally
    {
      store.Close();
    }
  }  throw new ArgumentException(string.Format(    "A Certificate with Thumbprint ‘{0}‘ could not be located.",
    thumbprint));
}
//通过指纹获得存储的可用证书
X509Certificate2 certificate = GetStoreCertificate(Thumbprint);

把证书添加到请求头中:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.ClientCertificates.Add(certificate);

总结:

版本控制提供了用户API版本的选择,管理认证让应用管理更加安全。

第一种方式:中国世纪互联代理没有提供这个服务。所以我也没法做个测试,烦人。

第二种方式是通过证书进行管理认证,接下来将单独写一个创建VM的Demo中会详细说明这个过程。另外上面的两种方式都是微软官方在API中可以找到详细说明的。(Windows Azure REST API)

时间: 2024-09-30 02:29:34

Windows Azure服务管理请求验证的相关文章

Windows Azure服务管理版本控制

1.Windows Azure's Service Management Versioning Operations provided by the Service Management API may have multiple versions. You must specify the version of an operation that you want to use by setting the x-ms-version request header. Requests witho

如何创建证书用于windows Azure 服务

向 Windows Azure 上载映像,都需要你创建证书,在创建证书后,您必须将其添加到 Windows Azure 中您的订阅. 一种方法是使用IIS管理器,然后在其中建立自我签署证书. 当您建立证书之后,需要导出该证书两次 - 一次含有私钥.pfx格式,另一次则没有.cer格式.您必须这样做两次的原因是因为您需要将不含私钥的证书上传至 Azure.含私钥的证书则需要导入至当前用户上的个人证书存储.当您在 [IIS 管理器] 中建立凭证时,它会将凭证放置本地计算机的个人存放区,这就是为什么您

Windows Azure 服务总线和物联网

机器到机器 (M2M) 计算正迅速成为一种技术,所有开发人员和架构师需要拥抱. 许多研究表明一个未来世界的数百亿美元的设备 (在地球上的每一个人的出现).MSDN杂志有2篇文章讨论Azure服务总线和物联网的文章: Windows Azure 服务总线和互联网的东西 Windows Azure 服务总线和物联网

Windows Azure创建管理数据库

上一篇我们介绍了,windows azure上的功能,今天主要介绍如何在windows azure上创建sql 数据库及管理数据库.在Azure上创建的数据库,只能通过sql manage studio进行远程管理,同时设置允许链接ip进行远程管理,同时在windows Azure上的数据库操作管理只能通过SQL语句进行操作管理.哈哈,给我的感觉又回到了学校时代,老师教大家通过sql语句进行管理数据库,这次有用武之地了. 我们首先打开windows azure控制面板,选择SQL数据库功能菜单,

登录windows azure及管理门户介绍

输入azure中国官方网址:www.azure.cn,打开"管理门户". 输入azure账户,密码 登录界面是不是挺炫的 登录成功后,首先看到的是windows azure所有项目的概览界面 左侧的导航栏是不同服务的分类,点击相应的分类,可以进入不同的服务界面.进入服务界面后右侧的控制台可以对该项服务进行不同的操作 点击账户信息,可以对账户进行注销,更改密码,及查看帐单情况 windows azure登录及管理界面给我的感觉就是界面简单,可操作性强,所有功能一目了然.

windows 2008 服务管理器刷新失败 异常来自hresult 0x800706be

下载Microsoft System Update Readiness Tool http://support.microsoft.com/kb/947821 并安装 安装后该工具会自动执行更新检查,生成日志文件 C:\Windows\Logs\CBS\CheckSUR.log 查看日志文件 再次打开服务器,服务器管理器 发现恢复正常了. 原文地址:http://blog.51cto.com/magic3/2141330

如何通过Azure Service Management REST API管理Azure服务

通过本文你将了解: 什么是Azure Service Management REST API 如何获取微软Azure 订阅号 如何获取Azure管理证书 如何调用Azure Service Management REST API 什么是Azure Service Management REST API Azure Service Management REST API(之后简称为Azure REST API)是微软开放的一组REST API,它使得Azure用户不仅可以从Azure门户网站上对运

浅谈Windows Azure 存储服务

我们现在正处于一个数据爆炸的年代,大数据.开放数据炒的如火如荼,表明数据给我们带来了不可估量的价值. 对于企业来说,保存.管理和维护数据已经成为一项重要的挑战.大量存储设备的采购.部署.数据规模的不断增长,对于需要为其数据使用可伸缩的.持久的且具有高可用性的存储的应用程序,云计算使其有了新的方案可供选择,这正是 Microsoft 开发 Azure 存储服务的原因. Azure存储服务包括Blob存储.表存储.队列存储和文件存储.这些服务都包含在每个存储账户中. 那么存储账户是一个唯一的命名空间

证明你是你——快速开启Windows Azure多重身份验证

中国版Windows Azure的多重身份验证(Multi-Factor Authentication)功能已经开放.这个功能说白了就是要“证明你是你”.目前可以支持以下几种验证方式: 手机,短信验证和语音回拨验证. 固话,语音回拨验证. 手机应用,目前只支持IOS和Windows Phone. 短信验证是我们最熟悉的一种方式,即:在登陆Windows Azure AD进行身份验证时,会向用户的手机发送一条验证码来验证用户身份:语音回拨验证在国外用的比较多,即:在登陆Windows Azure