分享方式:


Microsoft 身分識別平台上的 OAuth 2.0 和 OpenID Connect (OIDC)

瞭解 OAuth 或 OpenID Connect (OIDC) 在通訊協定層級不需要使用 Microsoft 身分識別平台。 不過,當您使用身分識別平台將驗證新增至應用程式時,您將會遇到通訊協定條款與概念。 當您使用 Microsoft Entra 系統管理中心時,我們的文件和驗證程式庫,瞭解一些基本概念可協助您的整合和整體體驗。

OAuth 2.0 中的角色

四方通常會參與 OAuth 2.0 和 OpenID Connect 驗證和授權交換。 這些交換通常稱為 驗證流程 驗證流程

顯示 OAuth 2.0 角色的圖表

  • 授權伺服器 - Microsoft 身分識別平台是授權伺服器。 也稱為識別提供者IdP,會安全地處理使用者的資訊、其存取權,以及驗證流程中合作對象之間的信任關係。 授權伺服器會在使用者登入 (已驗證) 之後,發出您的應用程式和 API 用來授與、拒絕或撤銷資源存取權 (授權) 的安全性權杖。

  • 用戶端 - OAuth 交換中的用戶端是要求存取受保護資源的應用程式。 用戶端可以是在伺服器上執行的 Web 應用程式、在使用者的網頁瀏覽器中執行的單頁 Web 應用程式,或呼叫另一個 Web API 的 Web API。 您通常會看到用戶端稱為用戶端應用程式應用程式應用程式

  • 資源擁有者 - 驗證流程中的資源擁有者通常是應用程式使用者,或在 OAuth 術語中 使用者。 使用者「擁有」您應用程式代表其存取的受保護資源 (其資料)。 資源擁有者可以授與或拒絕您的應用程式 (用戶端) 對其擁有資源的存取權。 例如,您的應用程式可能會呼叫外部系統的 API,以從該系統上的設定檔取得使用者的電子郵件地址。 其設定檔資料是終端使用者在外部系統上擁有的資源,而終端使用者可以同意或拒絕應用程式存取其資料的要求。

  • 資源伺服器 - 資源伺服器裝載資源擁有者的資料或提供其存取權。 資源伺服器通常是資料存放區前端的 Web API。 資源伺服器依賴授權伺服器來執行驗證,並使用授權伺服器所簽發持有人權杖中的資訊來授與或拒絕資源的存取權。

語彙基元

驗證流程中的合作對象會使用持有人權杖來確保、驗證及授權主體 (使用者、主機或服務),以及授與或拒絕受保護資源的存取權 (授權)。 Microsoft身分識別平台中的持有人權杖會格式化為 JSON Web 權杖 (JWT)

身分識別平台會使用三種類型的持有人權杖作為 安全性權杖

  • 存取權杖 - 存取權杖是由授權伺服器核發給用戶端應用程式。 用戶端會將存取權杖傳遞給資源伺服器。 存取權杖包含授權伺服器已授與用戶端的權限。

  • 識別碼權杖 - 識別碼權杖是由授權伺服器核發給用戶端應用程式。 用戶端會在登入使用者時使用識別碼權杖,並取得其基本資訊。

  • 重新整理權杖 - 用戶端會使用重新整理權杖或稱為 RT,向授權伺服器要求新的存取和識別碼權杖。 您的程式碼應該將重新整理權杖及其字串內容視為敏感性資料,因為它們僅供授權伺服器使用。

應用程式註冊

您的用戶端應用程式需要一種方式,才能信任 Microsoft 身分識別平台發行給它的安全性權杖。 建立信任的第一個步驟是 註冊您的應用程式。 當您註冊應用程式時,身分識別平台會自動指派一些值,而其他則會根據應用程式的類型進行設定。

最常參考的兩個應用程式註冊設定如下:

  • 應用程式 (用戶端 )識別碼 - 也稱為 應用程式識別碼用戶端識別碼,此身分識別平台會將此值指派給您的應用程式。 用戶端識別碼可在身分識別平台中唯一識別您的應用程式,並包含在平台核發的安全性權杖中。
  • 重新導向 URI - 在完成互動之後,授權伺服器會使用重新導向 URI 將資源擁有者的使用者代理程式 (網頁瀏覽器、行動應用程式) 導向至其他目的地。 例如,在終端使用者向授權伺服器進行驗證之後。 並非所有用戶端類型都使用重新導向 URI。

您的應用程式註冊也會保存您將在程式碼中使用的驗證和授權端點相關資訊,以取得識別碼和存取權杖。

端點

Microsoft 身分識別平台會使用 OAuth 2.0 和 OpenID Connect (OIDC) 1.0 的符合標準實作,來提供驗證和授權服務。 身分識別平台等符合標準的授權伺服器會提供一組 HTTP 端點,供驗證流程中的合作對象用來執行流程。

當您註冊或設定應用程式時,會自動產生應用程式的端點 URI。 您在應用程式程式碼中使用的端點取決於應該支援的應用程式類型和身分識別 (帳戶類型)。

兩個常用的端點是授權端點權杖端點。 以下是 authorizetoken 端點的範例:

# Authorization endpoint - used by client to obtain authorization from the resource owner.
https://login.microsoftonline.com/<issuer>/oauth2/v2.0/authorize
# Token endpoint - used by client to exchange an authorization grant or refresh token for an access token.
https://login.microsoftonline.com/<issuer>/oauth2/v2.0/token

# NOTE: These are examples. Endpoint URI format may vary based on application type,
#       sign-in audience, and Azure cloud instance (global or national cloud).

#       The {issuer} value in the path of the request can be used to control who can sign into the application. 
#       The allowed values are **common** for both Microsoft accounts and work or school accounts, 
#       **organizations** for work or school accounts only, **consumers** for Microsoft accounts only, 
#       and **tenant identifiers** such as the tenant ID or domain name.

若要尋找您已註冊的應用程式的端點,請在 Microsoft Entra 系統管理中心 瀏覽至:

[身分識別]>[應用程式]>[應用程式註冊]><[YOUR-APPLICATION]>>端點

下一步

接下來,了解每個應用程式類型所使用的 OAuth 2.0 驗證流程,以及您可以在應用程式中用來執行這些流程的程式庫:

我們強烈建議您不要製作您自己的程式庫或原始 HTTP 呼叫來執行驗證流程。 Microsoft 驗證程式庫 更安全且更容易。 不過,如果您的案例阻止您使用我們的程式庫,或您想要深入瞭解 Microsoft 身分識別平台的實作,我們有通訊協定參考: