如何:使用 ACS 建立我的第一個宣告感知 ASP.NET 服務

更新日期:2015 年 6 月 19 日

適用對象:Azure

套用至

  • Microsoft Azure Active Directory 存取控制服務 (也稱為「存取控制服務」或 ACS)

概觀

注意

此主題與舊式技術有關。 若要建立 XML Web 服務和 XML Web 服務用戶端,請參閱 https://go.microsoft.com/fwlink/?LinkID=220304

本主題描述如何將簡單的 ASP.NET Web 服務與 ACS 整合。 藉由整合 Web 服務與 ACS,您可以將驗證和授權的功能納入程式碼中。 ACS 提供向 Web 服務驗證和授權用戶端的機制。 如需詳細資訊,請參閱 Web 服務和 ACS

在 Web 服務案例中,假設有位 Web 服務用戶端沒有瀏覽器的存取權,但卻能自發性地行動 (不需要使用者參與)。 此外,在 Web 服務案例中,用戶端可以使用服務身分識別或企業身分識別來取得 Web 服務的存取權。 在本主題所述的練習中,用戶端會使用 ACS 中設定的服務身分識別認證類型,取得範例 ASP.NET Web 服務的存取權。

為了執行此主題中的步驟,您必須下載一個 ASP.NET 服務範例。 如需詳細資訊,請參閱程式碼範例:ASP.NET Web 服務

整合 ACS 與 ASP.NET Web 服務的步驟

重要

執行下列步驟之前,請確定您的系統符合 ACS 必要條件中摘要的所有 .NET Framework 和平臺需求。

若要整合 ACS 與此範例 ASP.NET Web 服務,請完成下列步驟:

  • 步驟 1 - 建立 Access Control 命名空間

  • 步驟 2 – 啟動 ACS 管理入口網站

  • 步驟 3 – 新增信賴憑證者應用程式

  • 步驟 4 - 建立規則

  • 步驟 5 – 設定服務身分識別

  • 步驟 6 – 設定 ACS 與您的 ASP.NET Web 服務之間的信任

  • 步驟 7 – 測試 ACS 與您的 ASP.NET Web 服務之間的整合

步驟 1 - 建立 Access Control 命名空間

如需詳細指示,請參閱如何:建立存取控制命名空間

步驟 2 – 啟動 ACS 管理入口網站

ACS 管理入口網站可讓您藉由新增識別提供者、設定信賴憑證者應用程式、定義規則和規則群組,以及建立信賴憑證者應用程式信任的認證,來設定您的存取控制命名空間。

啟動 ACS 管理入口網站

  1. 移至Microsoft Azure管理入口網站 (https://manage.WindowsAzure.com) 登入,然後按一下 [Active Directory]。 (疑難排解提示: 「Active Directory」專案遺失或無法使用)

  2. 若要管理存取控制命名空間,請選取該命名空間,然後按一下 [管理]。 (或按一下 [存取控制命名空間]、選取 [命名空間],然後按一下 [管理])。

步驟 3 – 新增信賴憑證者應用程式

本節說明如何新增信賴憑證者應用程式。 如需信賴憑證者應用程式的詳細資訊,請參閱 信賴憑證者應用程式

設定信賴憑證者應用程式

  1. 在 ACS 管理入口網站中,按一下左側樹狀目錄中的 [信賴憑證者應用程式],或按一下[消費者入門] 區段底下的 [信賴憑證者應用程式] 連結。

  2. 在 [信賴憑證者應用程式] 頁面上,按一下 [新增]

  3. 在 [新增信賴憑證者應用程式] 頁面上,執行下列動作:

    • 在 [名稱]中,輸入信賴憑證者應用程式的名稱。 在這個練習中,請鍵入 ASPNET Simple Service

    • 在 [模式] 中,選取 [手動輸入設定]

    • [領域] 中,輸入 ACS 所簽發之安全性權杖所套用的 URI。 在此練習中,輸入 https://localhost:8000/Service

    • 在 [ 傳回 URL] 中,輸入 ACS 傳回安全性權杖的 URL。 在此練習中,輸入 https://localhost:8000/Service

    • [錯誤 URL] (選擇性) 中,輸入 ACS 在登入期間發生錯誤時可以張貼至的 URL。 在此練習中,將此欄位保留空白。

    • [權杖格式] 中,選取 ACS 在發行安全性權杖給此信賴憑證者應用程式時要使用的權杖格式。 在此練習中,請選取 [SWT]。 如需權杖和權杖格式的詳細資訊,請參閱信賴憑證者應用程式中ACS 支援權杖格式和「權杖格式」。

    • 在 [權杖存留時間 (秒)] 中,指定 ACS 簽發的安全性權杖要保持有效的時間量。 在此練習中,請接受預設值 [600]。 如需權杖存留期的詳細資訊,請參閱 信賴憑證者應用程式中的。

    • 在 [身分識別提供者] 中,您可以選擇要搭配這個信賴憑證者應用程式一起使用的身分識別提供者。

      不過,在此練習中,不會使用識別提供者,用戶端會取得具有服務識別的 Web 服務的存取權,因此請務必清除[Windows Live ID] 旁的核取方塊。

      如需服務識別的詳細資訊,請參閱 服務身分識別

    • 在 [規則群組] 中,請選擇這個信賴憑證者應用程式處理宣告時要使用的規則群組。 在此練習中,請接受預設勾選的 [建立新規則群組]。 如需規則群組的詳細資訊,請參閱 規則群組和規則

    • 在 [權杖簽署設定] 下的 [權杖簽署金鑰] 中,按一下 [產生] 按鈕,以產生此信賴憑證者適用的 256 位元對稱金鑰。

  4. 按一下 [檔案] 。

步驟 4 - 建立規則

如果 ACS 是宣告簽發者) 至信賴憑證者應用程式,規則會決定如何從識別提供者或 ACS (傳遞宣告。 如需規則和規則群組的詳細資訊,請參閱 規則群組和規則

建立規則

  1. [ACS 管理入口網站首頁] 頁面上,按一下左側樹狀結構中的 [規則群組],或按一下[消費者入門] 區段底下的 [規則群組] 連結。

  2. 在 [規則群組] 頁面上,按一下 [ASPNET Simple Service 的預設規則群組] (因為您已將您的信賴憑證者應用程式命名為 ASPNET Simple Service)。

  3. [編輯規則群組] 頁面上,按一下 [加入]

  4. 在 [新增宣告規則] 頁面上,執行下列動作:

    • 在 [如果] 區段中的 [宣告簽發者] 下,選取 [存取控制服務]

    • 在 [如果] 區段中的 [輸入宣告類型] 下,保留 [任何] 的預設選項。

    • 在 [如果] 區段中的 [輸入宣告值] 下,保留 [任何] 的預設選項。

    • 在 [接著] 區段的 [輸出宣告類型] 下,選取[輸入類型],然後選取類型動作,因為這是您在本練習中使用的 ASP.NET Web 服務範例程式碼中指定的宣告類型: requiredClaimType = “action” 。 您可以在 acs\WebServices\ASPNETSimpleService\Service 下的範例程式碼中,于 Default.aspx.cs 中找到此字串。

    • 在 [Then] 區段的 [輸出宣告值] 下,選取 [輸入值],然後反向輸入,因為這是您在本練習中使用的 ASP.NET Web 服務範例程式碼中指定的宣告類型: requiredClaimValue = “reverse” 。 您可以在 acs\WebServices\ASPNETSimpleService\Service 下的範例程式碼中,于 Default.aspx.cs 中找到此字串。

    • 按一下 [檔案] 。

  5. 在 [編輯規則群組] 頁面上,按一下 [儲存]

步驟 5 – 設定服務身分識別

在本主題中所述的練習中,用戶端會向 ACS 要求 ACS 核發的簡單 Web 權杖 (SWT) ,以及向 ACS 註冊和管理的使用者名稱和密碼,換句話說,是 ACS 服務身分識別。 本節說明如何設定 ACS 服務識別,或如何設定由 ACS 裝載的認證,用戶端可用來向 ACS 要求權杖。 如需詳細資訊,請參閱 服務識別。 在此練習中,將服務識別名稱設定為acssample (ASP.NET 服務用戶端在向 ACS) 要求權杖時,使用此值作為使用者名稱,並將密碼設定為pass@word1

設定服務身分識別

  1. [ACS 管理入口網站首頁 ] 頁面上,按一下左側樹狀目錄中的服務 識別

  2. 在 [服務身分識別] 頁面上,按一下 [新增]

  3. 在 [新增服務身分識別] 頁面上,執行下列動作,然後按一下 [儲存]

    1. 在 [名稱] 中,鍵入 acssample

    2. 在 [類型] 中,選取 [密碼]

    3. 在 [密碼] 中,鍵入 pass@word1

    4. 保留 [生效日期] 與 [到期日] 的預設值不變。

  4. 在 [編輯服務身分識別] 頁面上,按一下 [儲存]

步驟 6 – 設定 ACS 與您的 ASP.NET Web 服務之間的信任

本節說明如何將 ACS 與您的範例 ASP.NET 服務整合。 如需詳細資訊,請參閱程式碼範例:ASP.NET Web 服務

設定 ACS 與 ASP.NET Web 服務之間的信任

  1. 在您下載的範例中尋找 ASPNETSimpleService.sln,並在 Visual Studio® 2010 中開啟它。

  2. 在 Visual Studio 2010 中的 [方案總管] 中,在 [方案 ‘ASPNETSimpleService’] 下按兩下 [web.config]

  3. web.config中,輸入您在上述步驟中 ACS 中設定的存取控制命名空間名稱和權杖簽署金鑰。 若要檢視權杖簽署金鑰,請按一下 ACS 管理入口網站中的 [ 憑證和金鑰 ]。

    以下程式碼片段顯示您需要更新的 web.config 檔案元素。

    <appSettings>
        <add key="AccessControlHostName" value="accesscontrol.windows.net"/>
        <add key="AccessControlNamespace" value="...enter your Access Control namespace name..."/>
        <add key="IssuerSigningKey" value="...enter your signing key..."/>
      </appSettings>
    
  4. 儲存已更新的 web.config 檔案。

  5. 在 Visual Studio 2010 中的 [方案總管] 中,在 [方案 ‘ASPNETSimpleService’] 下按兩下 app.config 檔案。

  6. app.config檔案中,輸入您在先前步驟中設定之服務識別存取控制命名空間的名稱,以及您在 ACS 中設定之服務識別的使用者名稱和密碼。 若要檢視使用者名稱和密碼,請按一下 ACS 管理入口網站中的 [服務身分識別 ]。

    以下程式碼片段顯示您需要變更的 app.config 檔案元素。

    <appSettings>
        <add key="AccessControlHostName" value="accesscontrol.windows.net"/>
        <add key="AccessControlNamespace" value="...enter your Access Control namespace name..."/>
        <add key="WrapPassword" value="...update to your password..."/>
        <add key="WrapUsername" value="...update to your username..."/>
        <add key="ServiceAddress" value="https://localhost:8000/Service/Default.aspx" />
      </appSettings>
    
  7. 儲存已更新的 app.config 檔案。

步驟 7 – 測試 ACS 與您的 ASP.NET Web 服務之間的整合

本節說明如何測試 ASP.NET Web 服務和 ACS 之間的整合。

測試 ACS 與您的 ASP.NET Web 服務之間的整合

  1. 若要在 Visual Studio 2010 中執行 ASP.NET 服務,請按 F5。

  2. 若要執行 ASP.NET Wb 服務用戶端,請在 [方案總管] 中的 [用戶端] 按一下滑鼠右鍵,然後選取 [偵錯],再選取 [啟動新例項]

    命令列視窗隨即開啟並顯示下列訊息:輸入要反轉的字串,然後按 < ENTER >鍵。

  3. 輸入任何字串,例如 hello world!,然後按 Enter 鍵。

    如果您的輸入是 hello world!,您應該會在主控台應用程式上看到下列回應: !dlrow olleh

另請參閱

概念

ACS 的作法