共用方式為


網路應用程式介面

警告

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

Web API 應用程式是需要從 Web API 取得資源的 Web 應用程式。 在此案例中,Web 應用程式可用來驗證和呼叫 Web API 的身分識別類型有兩種:

  • 應用程式身分識別 - 此案例會使用 OAuth 2.0 用戶端認證授與來驗證作為應用程式並存取 Web API。 使用應用程式身分識別時,Web API 只能偵測 Web 應用程式正在呼叫它,因為 Web API 不會收到使用者的任何資訊。 如果應用程式收到使用者的相關信息,它將會透過應用程式通訊協定傳送,且不會由 Azure AD 簽署。 Web API 信任 Web 應用程式驗證使用者。 基於這個理由,此模式稱為受信任的子系統。
  • 委派的使用者身分識別 - 此案例可以透過兩種方式來完成:OpenID Connect 和 OAuth 2.0 授權碼授與機密用戶端。 Web 應用程式會取得使用者的存取令牌,這向 Web API 證明使用者已成功向 Web 應用程式驗證,而 Web 應用程式能夠取得委派的使用者身分識別來呼叫 Web API。 此存取令牌會在要求中傳送至 Web API,以授權使用者並傳回所需的資源。

下列流程會討論應用程式身分識別和委派的使用者身分識別類型。 他們之間的主要差異在於委派的使用者身分識別必須先取得授權碼,使用者才能登入並取得 Web API 的存取權。

圖表

Web 應用程式至 Web API 圖表

通訊協定流程

使用 OAuth 2.0 用戶端認證授與的應用程式身分識別

  1. 使用者在 Web 應用程式中登入 Azure AD(如需詳細資訊,請參閱 Web 應用程式 一節)。
  2. Web 應用程式需要取得存取令牌,才能向 Web API 進行驗證並擷取所需的資源。 它會向 Azure AD 的令牌端點提出要求,並提供認證、應用程式識別碼和 Web API 的應用程式識別碼 URI。
  3. Azure AD 會驗證應用程式,並傳回用來呼叫 Web API 的 JWT 存取令牌。
  4. 透過 HTTPS,Web 應用程式會使用傳回的 JWT 存取令牌,將具有「持有人」指定之 JWT 字串新增至 Web API 的要求授權標頭。 接著,Web API 會驗證 JWT 令牌,如果驗證成功,則會傳回所需的資源。

使用 OpenID Connect 進行使用者身分識別授權委派

  1. 使用者使用 Azure AD 登入 Web 應用程式(請參閱上面的網頁瀏覽器至 Web 應用程式一節)。 如果 Web 應用程式的使用者尚未同意允許 Web 應用程式代表其呼叫 Web API,使用者就必須同意。 應用程式會顯示它所需的許可權,如果其中任何一個是系統管理員層級的許可權,目錄中的一般使用者將無法同意。 此同意程式僅適用於多租使用者應用程式,而非單一租使用者應用程式,因為應用程式已經擁有必要的許可權。 當使用者登入時,Web 應用程式會收到標識元令牌,其中包含使用者的相關信息,以及授權碼。
  2. 使用 Azure AD 發出的授權碼,Web 應用程式會將要求傳送至 Azure AD 的令牌端點,其中包含授權碼、用戶端應用程式的詳細數據(應用程式識別碼和重新導向 URI),以及所需的資源(Web API 的應用程式識別碼 URI)。
  3. Azure AD 會驗證 Web 應用程式和 Web API 的授權碼和相關信息。 驗證成功后,Azure AD 會傳回兩個令牌:JWT 存取令牌和 JWT 重新整理令牌。
  4. 透過 HTTPS,Web 應用程式會使用傳回的 JWT 存取令牌,將具有「持有人」指定之 JWT 字串新增至 Web API 的要求授權標頭。 接著,Web API 會驗證 JWT 令牌,如果驗證成功,則會傳回所需的資源。

使用 OAuth 2.0 授權碼授與委派的使用者身分識別

  1. 用戶已經登入 Web 應用程式,其驗證機制與 Azure AD 無關。
  2. Web 應用程式需要授權碼才能取得存取令牌,因此它會透過瀏覽器向 Azure AD 的授權端點發出要求,並在成功驗證後提供 Web 應用程式的應用程式識別碼和重新導向 URI。 使用者登入 Azure AD。
  3. 如果 Web 應用程式的使用者尚未同意允許 Web 應用程式代表其呼叫 Web API,使用者就必須同意。 應用程式會顯示它所需的許可權,如果其中任何一個是系統管理員層級的許可權,目錄中的一般使用者將無法同意。 此同意同時適用於單一和多租用戶應用程式。 在單一租戶案例中,系統管理員可以執行管理員同意來代表其使用者。 這可以透過 Azure 入口網站 中的 Grant Permissions 按鈕來完成。
  4. 使用者同意之後,Web 應用程式會收到需要取得存取令牌的授權碼。
  5. 使用 Azure AD 發出的授權碼,Web 應用程式會將要求傳送至 Azure AD 的令牌端點,其中包含授權碼、用戶端應用程式的詳細數據(應用程式識別碼和重新導向 URI),以及所需的資源(Web API 的應用程式識別碼 URI)。
  6. Azure AD 會驗證 Web 應用程式和 Web API 的授權碼和相關信息。 驗證成功后,Azure AD 會傳回兩個令牌:JWT 存取令牌和 JWT 重新整理令牌。
  7. 透過 HTTPS,Web 應用程式會使用傳回的 JWT 存取令牌,將具有「持有人」指定之 JWT 字串新增至 Web API 的要求授權標頭。 接著,Web API 會驗證 JWT 令牌,如果驗證成功,則會傳回所需的資源。

程式代碼範例

請參閱 Web 應用程式至 Web API 案例的程式代碼範例。 而且,經常回來查看 -- 經常新增範例。 Web 應用程式與 Web API 接口

應用程式註冊

若要向 Azure AD v1.0 端點註冊應用程式,請參閱 註冊應用程式

  • 單一租使用者 - 針對應用程式身分識別和委派的使用者身分識別案例,Web 應用程式和 Web API 都必須在 Azure AD 中的相同目錄中註冊。 Web API 可以設定為公開一組許可權,用來限制 Web 應用程式的對其資源的存取。 如果使用委派的使用者身分識別類型,Web 應用程式必須從 Azure 入口網站中 [ 許可權至其他應用程式 的許可權] 下拉功能表中選取所需的許可權。 如果使用應用程式識別類型,則不需要此步驟。
  • 多租戶 - 首先,網站應用程式已設定為指出其運作所需的許可權。 當目的地目錄中的使用者或系統管理員同意應用程式時,此必要許可權清單會顯示在對話框中,讓應用程式可供其組織使用。 某些應用程式只需要用戶層級許可權,組織中的任何使用者都可以同意。 其他應用程式需要系統管理員層級的許可權,組織中的用戶無法同意該許可權。 只有目錄管理員可以同意需要此層級許可權的應用程式。 當使用者或系統管理員同意時,Web 應用程式和 Web API 都會在其目錄中註冊。

憑證到期

當 Web 應用程式使用其授權碼來取得 JWT 存取令牌時,也會收到 JWT 重新整理令牌。 當存取令牌過期時,重新整理令牌可以用來重新驗證使用者,而不需要他們再次登入。 接著,此重新整理令牌會用來驗證使用者,從而產生新的存取令牌和重新整理令牌。

後續步驟