共用方式為


程式碼範例:OAuth 2.0 憑證驗證

更新日期:2015 年 6 月 19 日

適用對象:Azure

此範例說明如何使用 OAuth 2.0 通訊協定來呈現 X.509 憑證簽署的 SAML 權杖,以向Microsoft Azure Active Directory 存取控制 (進行驗證,也稱為存取控制服務或 ACS) 。 此憑證對應于 ACS 上設定的 ServiceIdentity,而 ACS 會發出具有 ServiceIdentity 之 nameidentifier 宣告的 SWT。 此 SWT 可用來對 OAuth 2.0 保護的資源進行驗證。 此範例符合 OAuth 2.0 通訊協定 (Draft 13)。 此範例的程式碼位於Microsoft Azure Active Directory 存取控制 (ACS) 程式碼範例套件的 OAuth2 (C#\OAuth) 2 子目錄中。

必要條件

若要執行此範例,您將需要:

  1. Azure 入口網站和存取控制命名空間中的帳戶。

  2. Visual Studio 2010 (任何版本)

如需詳細資訊,請參閱 ACS 必要 條件 (https://go.microsoft.com/fwlink/?LinkId=221065) 。

設定範例

您可以使用 ACS 管理入口網站或 ACS 管理服務來執行此範例所需的 ACS 組態。 此主題將說明這兩種選項。

  1. 選項 1:使用 ACS 管理入口網站設定範例

  2. 選項 2:使用 ACS 管理服務設定範例

選項 1:使用 ACS 管理入口網站設定範例

使用 ACS 管理入口網站設定範例

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

  2. 若要建立存取控制命名空間,請依序按一下 [新增][應用程式服務][存取控制][快速建立]。 (或是先按一下 [新增] 再按一下 [存取控制命名空間])。

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

    此動作可開啟「存取控制服務」管理入口網站。

  4. 若要向 ACS 註冊您的應用程式,請按一下 [信賴憑證者應用程式],按一下 [ 新增],然後在表單中輸入下列資訊:

    • 在 [名稱] 欄位中,輸入 OAuth2 RP

    • 在 [ 領域] 欄位中,輸入 https://oauth2relyingparty/

    • 在 [權杖格式] 欄位中,選取 [SWT]

    • 按一下 [產生] 以建立新的金鑰。

    • 在 [到期日] 欄位中,為金鑰輸入適當的到期日。 到達此日期後,金鑰即失去效用。

  5. 按一下 [檔案] 。

  6. 註冊信賴憑證者之後,現在就可以建立規則,以判斷 ACS 將發出給應用程式的宣告。 在此範例中,我們將建立規則,以授與 ACS 傳遞所產生的任何宣告。

    若要建立此規則,請按一下 [規則群組],然後按一下 [OAuth2 RP 的預設規則群組]。 使用下列設定來新增規則:

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

    • 在 [輸入宣告類型] 區段中,選取 [任何]

    • 在 [輸入宣告值] 區段中,選取 [任何]

    • 在 [輸出宣告類型] 區段中,選取 [傳遞輸入宣告類型]

    • 在 [輸出宣告值] 區段中,選取 [傳遞輸入宣告值]

  7. 此範例依賴 ACS 管理的認證。

    若要設定用戶端應用程式的新用戶端憑證,請依序按一下 [服務識別身分] 和 [新增],然後輸入名稱。 新增 [X.509 憑證] 的 [認證類型],然後瀏覽至此範例之 [憑證] 資料夾中的 ACS2ClientCertificate.cer 檔案。 按一下 [檔案] 。

  8. 現在已設定 ACS,請開啟 Visual Studio。

選項 2:使用 ACS 管理服務設定範例

Visual Studio範例解決方案有一個名為ConfigureSample的主控台應用程式,其使用 ACS 管理服務和 Common 類別庫中定義的常見協助程式。 此應用程式可用來設定您的存取控制命名空間,以搭配此範例使用。

使用 ACS 管理服務設定範例

  1. 使用存取控制命名空間的相關資訊更新Common類別庫。 開啟 SamplesConfiguration.cs,然後輸入下列項目:

    • ServiceNamespace - 這是您存取控制命名空間的名稱

    • ManagementServiceIdentityName - 這是管理服務帳戶的名稱

    • ManagementServiceIdentityKey - 這是與管理服務帳戶相關聯的密碼

    • AcsHostUrl - 這是 ACS 的主機名稱

  2. 在 Visual Studio 中執行ConfigureSample應用程式。 這會將 ACS 設定為執行此範例。

  3. ConfigureSample 應用程式完成時,會將產生的信賴憑證者簽署金鑰輸出至主控台。 請將此金鑰複製到剪貼簿。

執行範例

執行範例

  1. 在 Visual Studio 中開啟範例。 除了 ConfigureSampleCommon之外,方案還包含兩個專案: ProtectedResourceWebAppClient

  2. 如果您尚未這麼做,請在Common\SamplesConfiguration.cs中輸入存取控制命名空間詳細資料。 如需詳細資訊,請參閱上述 選項 2 的步驟 1:透過 ACS 管理服務進行 設定。 Client 專案也會使用此檔案。

  3. ProtectedResourceWebApp 專案中開啟 web.config 檔案。

  4. 在適當的 AppSettings 元素中輸入您的權杖簽署金鑰。 如果您使用管理服務來設定 ACS,這是您複製到剪貼簿的值。 若要取得權杖簽署金鑰,請在 ACS 入口網站中,按一下 [ 憑證和金鑰]。 以下程式碼片段顯示 web.config 檔案的這個區段:

    <appSettings>
       <add key="SigningKey" value="...Copy Signing Key..."/>
    </appSettings>
    
  5. 若要執行範例,請啟動 ProtectedResourceWebApp。 畫面上會出現網頁瀏覽器,但文字方塊會是空的,因為網頁瀏覽器未經驗證。

  6. 執行 Client。 主控台視窗中會顯示 HTML。 請注意,HTML 表示使用者已驗證,並顯示 ACS 的宣告。