匯出 (0) 列印
全部展開

驗證服務管理要求

更新日期: 2014年11月

對管理服務的要求都必須使用下列其中一個方法進行驗證:

對管理服務的安全要求,可以藉由建立 Azure AD 應用程式並使用Active Directory Authentication Library從應用程式取得存取權杖,來進行驗證。如需使用 Azure AD 進行驗證的詳細資訊,請參閱 Azure AD 的驗證案例

執行下列動作可將應用程式新增至 Azure AD:

  1. 登入 Azure 管理入口網站。

  2. 在左功能表的底部按一下 [Active Directory],然後按一下 [預設目錄]。

  3. 在 [預設目錄] 頁面的 [整合應用程式] 之下,按一下 [新增您正在開發的應用程式]。

    新增 Azure AD 應用程式
  4. 輸入應用程式的名稱,選取 [NATIVE CLIENT 應用程式],然後按一下向右箭號。

    提供應用程式的名稱。
  5. 輸入應用程式的 URI,然後按一下核取記號。URI 包含前面加上 http://localhost/ 的應用程式名稱。

    輸入重新導向 URL
  6. 建立應用程式之後,您必須加入應用程式的權限以存取服務管理 API。移至您應用程式的頁面,然後按一下 [設定]。

  7. 在 [設定] 頁面底部的 [其他應用程式的權限] 區段中,按一下 [選取應用程式],然後選取 [Windows Azure 服務管理 API]。

    指派應用程式權限
  8. 按一下 [已委派的權限:0],然後選取 [存取 Azure 服務管理]。

    繼續設定權限
  9. 在下方功能表上按一下 [儲存]。

您可以使用 NuGet 套件,輕鬆地將 Active Directory Authentication Library安裝到 Visual Studio 專案中。若要安裝此套件,請執行下列動作:

  1. 以滑鼠右鍵按一下 [方案總管] 中的專案名稱,然後按一下 [管理 NuGet 套件]。

    管理 NuGet 封裝
  2. 在搜尋方塊中輸入 Active Directory,對 [Active Directory 驗證程式庫] 套件按一下 [安裝],然後遵循指示來安裝此套件。

    安裝 Active Directory 程式庫

下列程式碼範例會示範如何擷取存取權杖:

 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; }

當您使用上列的程式碼時,您必須取代下列項目:

  • 以應用程式的 GUID 取代 {tenantId}。若要尋找 GUID,請移至管理入口網站的 Active Directory 區段中的 [預設目錄] 頁面,選取您先前建立的應用程式,然後按一下 [檢視端點]。

    檢視端點

    複製應用程式的 GUID 並以此取代預留位置。

    複製應用程式端點
  • 以用戶端識別碼取代 {clientId}。若要尋找用戶端識別碼,請移至管理入口網站中應用程式的 [設定] 頁面。

    複製 AD 用戶端 ID
  • 以重新導向 Uri 取代 {redirectUri}。若要尋找重新導向 Uri,請移至管理入口網站中應用程式的 [設定] 頁面。

    複製應用程式重新導向 URI

使用下列這行程式碼將以上所示的 GetAuthorizationHeader 方法傳回的權杖,指派給可供要求使用的變數:

string token = GetAuthorizationHeader();

使用下列幾行程式碼將此權杖新增至要求:

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

對管理服務的安全要求,可以使用透過 SSL 的管理憑證進行驗證。若要使用管理憑證,您必須將它上傳至 Azure。將管理憑證新增至訂閱後,您可以使用憑證來簽署對服務的要求。如需有關建立管理憑證以及將憑證與訂閱建立關聯的詳細資訊,請參閱建立及上傳 Azure 的管理憑證

設計應用程式時,請留意下列關於管理憑證的要點:

  • 服務管理 API 不會驗證憑證是否仍然有效。即使憑證過期,驗證仍會成功。

  • 所有管理憑證都帶有同一組權限。在某個角色中設定某個管理憑證,而在不同的角色中設定相同訂用帳戶的另一個管理憑證,這種「以角色為基礎的」驗證概念不存在。

下列範例會說明如何使用下列項目來擷取管理憑證:System.NetSystem.Security.Cryptography.X509Certificates 程式庫:

 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)); }

使用下列這行程式碼,將以上所示的 GetStoreCertificate 方法傳回的憑證,指派給可供要求使用的變數:

note附註
Thumbprint 代表您將管理憑證新增至訂閱時的指紋。

 X509Certificate2 certificate = GetStoreCertificate(Thumbprint);

使用下列幾行程式碼將此憑證新增至要求:

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

顯示:
© 2015 Microsoft