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

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

發佈時間: 2011年5月

更新日期: 2015年6月

適用於: 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#\OAuth2) 子目錄。

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

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

  2. Visual Studio 2010 (任何版本)

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

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

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

  2. 選項 2:使用 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。

Visual Studio 範例解決方案中有一個名為 ConfigureSample 的主控台應用程式,其使用 ACS 管理服務與 [一般] 類別庫中所定義的一般協助程式。此應用程式可用來設定用於此範例的存取控制命名空間。

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

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

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

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

    • AcsHostUrl - 這是 ACS 的主機名稱

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

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

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

  2. Common\SamplesConfiguration.cs 中輸入您的存取控制命名空間詳細資料 (若尚未輸入)。如需詳細資訊,請參閱 [選項 2:透過 ACS 管理服務進行設定的步驟 1。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 的宣告。

顯示:
© 2016 Microsoft