共用方式為


使用用戶端憑證的服務對服務呼叫(共用秘密或憑證)

警告

此內容適用於較舊的 Azure AD v1.0 端點。 針對新專案使用 Microsoft身分識別平臺

OAuth 2.0 用戶端認證授與流程允許 Web 服務(機密用戶端)使用自己的認證,而不是模擬使用者,以在呼叫另一個 Web 服務時進行驗證。 在此案例中,用戶端通常是仲介層 Web 服務、精靈服務或網站。 為了獲得更高層級的保證,Azure AD 也允許呼叫服務使用憑證(而不是共用密碼)作為認證。

用戶端認證授與流程圖

下圖說明客戶端認證授與流程如何在 Azure Active Directory (Azure AD) 中運作。

OAuth2.0 用戶端認證授與流程

  1. 用戶端應用程式會向 Azure AD 令牌發行端點進行驗證,並要求存取令牌。
  2. Azure AD 令牌發行端點會發出存取令牌。
  3. 存取令牌可用來向受保護的資源進行驗證。
  4. 來自受保護資源的數據會傳回用戶端應用程式。

在 Azure AD 中註冊服務

在 Azure Active Directory (Azure AD) 中註冊呼叫服務和接收服務。 如需詳細指示,請參閱 整合應用程式與 Azure Active Directory

要求存取令牌

若要請求存取令牌,請使用 HTTP POST 對租戶特定的 Azure AD 端點。

https://login.microsoftonline.com/<tenant id>/oauth2/token

服務間存取權杖請求

根據用戶端應用程式選擇受到共享密碼或憑證保護,有兩種情況。

第一個案例:具有共享密鑰的存取令牌請求

使用共享密碼時,服務對服務存取令牌要求包含下列參數:

參數 類型 說明
grant_type (授權類型) 必須的 指定要求的授與類型。 在客戶端認證授與流程中,值必須 client_credentials
client_id (客戶識別碼) 必須的 指定呼叫 Web 服務的 Azure AD 用戶端識別碼。 若要尋找呼叫端應用程式的用戶端標識符,請在 Azure 入口網站中,按兩下 [Azure Active Directory],按兩下 [ 應用程式註冊],然後按兩下應用程式。 client_id是 應用程式識別碼
用戶端密鑰 必須的 在 Azure AD 中輸入為呼叫 Web 服務或精靈應用程式註冊的密鑰。 若要建立密鑰,請在 Azure 入口網站中,依序按兩下 [Azure Active Directory]、[ 應用程式註冊]、[ 設定]、[ 密鑰] 和 [金鑰]。 提供此秘密時進行 URL 編碼。
資源 必須的 輸入接收 Web 服務的應用程式識別碼 URI。 若要尋找應用程式標識碼 URI,請在 Azure 入口網站中,依序按兩下 [Azure Active Directory]、[ 應用程式註冊]、[服務應用程式],然後按兩下 [ 設定 ] 和 [ 內容]。

範例

下列 HTTP POST 會要求 Web 服務的存取令牌https://service.contoso.com/client_id 識別要求存取權杖的網路服務。

POST /contoso.com/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=625bc9f6-3bf6-4b6d-94ba-e97cf07a22de&client_secret=qkDwDJlDfig2IpeuUZYKH1Wb8q1V0ju6sILxQQqhJ+s=&resource=https%3A%2F%2Fservice.contoso.com%2F

第二個案例:使用憑證的存取令牌請求

含有憑證的服務對服務存取權杖要求會包含下列參數:

參數 類型 說明
grant_type (授權類型) 必須的 指定要求的回應類型。 在客戶端認證授與流程中,值必須 client_credentials
client_id (客戶識別碼) 必須的 指定呼叫 Web 服務的 Azure AD 用戶端識別碼。 若要尋找呼叫端應用程式的用戶端標識符,請在 Azure 入口網站中,按兩下 [Azure Active Directory],按兩下 [ 應用程式註冊],然後按兩下應用程式。 client_id是 應用程式識別碼
客戶聲明類型 必須的 值必須是 urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion(客戶斷言) 必須的 判斷提示(JSON Web Token),您必須使用您註冊為應用程式的認證來建立和簽署。 請參閱憑證認證,以了解如何註冊您的憑證與聲明格式。
資源 必須的 輸入接收 Web 服務的應用程式識別碼 URI。 若要尋找應用程式標識碼 URI,請在 Azure 入口網站中,依序按兩下 [Azure Active Directory]、[ 應用程式註冊]、[服務應用程式],然後按兩下 [ 設定 ] 和 [ 內容]。

請注意,參數幾乎與共享密碼的要求相同,不同之處在於client_secret參數會由兩個參數取代:client_assertion_type和client_assertion。

範例

下列 HTTP POST 會使用 https://service.contoso.com/ 憑證要求 Web 服務的存取令牌。 會 client_id 識別要求存取令牌的 Web 服務。

POST /<tenant_id>/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

resource=https%3A%2F%contoso.onmicrosoft.com%2Ffc7664b4-cdd6-43e1-9365-c2e1c4e1b3bf&client_id=97e0a5b7-d745-40b6-94fe-5f77d35c6e05&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg&grant_type=client_credentials

服務對服務存取令牌回應

成功回應包含具有下列參數的 JSON OAuth 2.0 回應:

參數 說明
access_token(存取憑證) 要求的存取憑證。 呼叫的 Web 服務可以使用此令牌向接收 Web 服務進行驗證。
令牌類型 表示令牌類型值。 Azure AD 支援的唯一類型是 Bearer。 如需持有人令牌的詳細資訊,請參閱 OAuth 2.0 授權架構:持有人令牌使用方式(RFC 6750)。
有效期限 存取權杖的有效時間 (以秒為單位)。
到期日 存取令牌到期的時間。 日期會以 1970-01-01T0:0:0Z UTC 到到期時間之前的秒數表示。 這個值用來判斷快取令牌的存留期。
提前不可 存取令牌開始可用的時間。 日期會以 1970-01-01T0:0:0Z UTC 到令牌有效時間之前的秒數表示。
資源 接收 Web 服務的應用程式識別碼 URI。

回應範例

下列範例顯示 Web 服務存取令牌要求的成功回應。

{
"access_token":"eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw",
"token_type":"Bearer",
"expires_in":"3599",
"expires_on":"1388452167",
"resource":"https://service.contoso.com/"
}

使用存取令牌來存取受保護的資源

服務可以使用取得的存取令牌,藉由在標頭中 Authorization 設定令牌,向下游Web API提出已驗證的要求。

範例

GET /me?api-version=2013-11-08 HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw

另請參閱