共用方式為


使用 Microsoft Entra 多重因素驗證與外部供應商(預覽版)

本文說明外部認證提供者如何連接 Microsoft Entra 多重驗證(MFA)。

這很重要

外部認證提供者的使用目前仍處於預覽階段。 如需預覽的詳細資訊,請參閱 線上服務的通用授權條款

透過這次預覽,您可以使用外部認證提供者與 Microsoft Entra ID 租戶整合,作為外部認證方式。 外部認證方法可以滿足 MFA 對資源或應用程式存取的第二個要求。 外部認證方法至少需要 Microsoft Entra ID P1 授權。

當使用者登入時,會評估租用戶原則。 驗證需求是根據使用者嘗試存取的資源來決定。

根據其參數,登入可能會有多個政策。 這些參數包括使用者與群組、應用程式、平台、登入風險等級等。

根據驗證要求,使用者可能需要以其他因素登入以符合多重身份驗證(MFA)要求。 第二個因素的類型需要與第一個因素的類型相輔相成。

租戶管理員會為 Microsoft Entra ID 新增外部認證方法。 若租戶需要外部驗證 MFA 方式,則在 Microsoft Entra ID 驗證兩者後,登入即視為符合 MFA 要求:

  • 第一個步驟是使用 Microsoft Entra ID 完成的。
  • 第二個因素是透過外部認證方法完成的。

該驗證符合兩種或以上方法的多重因素驗證要求:

  • 您已知的資訊 (知識)
  • 您擁有的物品 (持有)
  • 您的某些特徵 (固有)

外部認證方法則實作於 OpenID Connect(OIDC)之上。 此實作至少需要三個面向公眾的端點來實作外部認證方法:

  • OIDC 探索端點,如探索提供者元數據中所述
  • 有效的 OIDC 驗證端點
  • 發佈提供者公開憑證所在的 URL

以下是使用外部認證方式登入的運作方式:

  1. 使用者嘗試使用密碼等第一個因素登入受 Microsoft Entra ID 保護的應用程式。

  2. Microsoft Entra ID 會判斷需要滿足其他因素(例如條件存取政策是否需要多重驗證)。

  3. 使用者選擇外部認證方式作為第二因素。

  4. Microsoft Entra ID 會將使用者的瀏覽器會話重新導向到外部驗證方法的網址。

    這個 URL 是從管理員在建立外部認證方法時設定的發現 URL 中發現的。

    應用程式會提供即將過期或已過期的憑證,其中包含識別使用者和租戶的資訊。

  5. 外部驗證提供者會驗證權杖是否來自 Microsoft Entra ID,並檢查權杖的內容。

  6. 外部認證提供者可能會呼叫 Microsoft Graph,取得關於使用者的額外資訊。

  7. 外部認證提供者會執行其認為必要的任何行動,例如以憑證驗證使用者。

  8. 外部認證提供者會將使用者重新導向至 Microsoft Entra ID,並附上有效的憑證,包含所有必要的聲明。

  9. Microsoft Entra ID 會驗證權杖的簽章是否來自已設定的外部驗證提供者,然後檢查權杖的內容。

  10. Microsoft Entra ID 會根據需求驗證存取權杖。

  11. 若驗證成功,代表使用者已符合多重身份驗證(MFA)要求。 使用者可能也必須符合其他原則需求。

展示外部認證方法運作方式的示意圖。

設定一個新的外部驗證提供者,使用 Microsoft Entra ID

要發出 id_token_hint,外部認證方法需要一個能代表整合的應用程式。 你可以用兩種方式建立應用程式:

  • 在每個使用外部供應商的租戶中。
  • 作為一個多租戶應用程式。 為了讓租戶能夠整合,特權角色管理員需要授權同意。

使用多租戶應用程式可以降低每個租戶間錯誤設定的機率。 提供者也可以對元資料進行變更(例如,回覆網址集中於一處),而不必要求每個租戶都自行更改。

若要設定多租用戶應用程式,提供者管理員必須先:

  1. 建立一個 Microsoft Entra ID 租戶(如果他們還沒有的話)。

  2. 在其租用戶中註冊應用程式。

  3. 在應用程式中,於支援帳號類型中,選擇任一組織目錄中的帳號(任一 Microsoft Entra ID 租戶 - 多租戶)。

  4. 新增 Microsoft Graph 的委派權限 openidprofile 值。

  5. 請勿在此應用程式中發佈任何範圍。

  6. 將外部身份提供者的有效 authorization_endpoint 網址加入該應用程式作為回覆網址。

    注意

    在應用程式註冊中,將提供者的發現文件中所提供的authorization_endpoint值作為重新導向 URL。 否則,會出現以下錯誤:「ENTRA IDSTS50161:未能驗證外部理賠提供者的授權網址!」

應用程式註冊程序會建立具有數個屬性的應用程式。 你需要這些房產來配合我們的情境。

財產 說明
物件識別碼 提供者可以使用物件識別碼搭配 Microsoft Graph 來查詢應用程式資訊。

提供者可以使用物件識別碼,以程式設計方式擷取和編輯應用程式資訊。
申請編號 提供者可以將應用程式 ID 作為其應用程式的用戶端 ID。
首頁網址 提供者首頁的網址不會被用於任何東西,但你需要它來註冊應用程式。
回應網址列表 提供者的有效重定向網址。 其中一種應該會匹配為該供應商租戶設定的主機 URL。 註冊的回覆 URL 必須與 Microsoft Entra ID 透過 OIDC Discovery 取得的主機 URL 前綴 authorization_endpoint 相符。

另一個有效的整合支援模式是為每個租戶使用一個應用程式。 如果您使用單一租用戶註冊,則租用戶系統管理員必須針對單一租用戶應用程式,使用上表中的屬性建立應用程式註冊。

注意

你需要租戶中使用外部認證方法的應用程式獲得管理員同意。 如果您未授予同意,管理員嘗試使用外部驗證方法時會出現以下錯誤:「AADSTS900491:服務主體 <,您的應用程式 ID> 未被找到。」

設定選擇性宣告

提供者可透過使用 選用宣稱 id_token來配置更多宣稱。

注意

不論應用程式的建立方式為何,提供者都需要為每個雲端環境設定選擇性宣告。 如果多租用戶應用程式用於全域 Azure 和適用於美國政府的 Azure,則每個雲端環境都需要不同的應用程式和應用程式識別碼。

為 Microsoft Entra ID 新增外部認證方法

外部身份提供者資訊會儲存在每個租戶的認證方法政策中。 提供者資訊被儲存為一種externalAuthenticationMethodConfiguration類型的驗證方法。

每個提供者在政策的列表物件中都有一個條目。 每個項目都必須陳述:

  • 如果該方法已啟用。
  • 包含的群組可以使用此方法。
  • 排除的群體無法使用該方法。

要設定使用者登入的多重驗證要求,擁有條件存取管理員角色的使用者可以用「要求多重驗證授權」建立政策。 目前不支援具備驗證強度的外部驗證方法。

了解更多關於如何在 Microsoft Entra 管理中心 新增外部驗證方法

Microsoft Entra ID 與提供者的互動

接下來的章節將說明提供者需求,並包含 Microsoft Entra ID 如何與提供者互動的範例。

探索提供者中繼資料

外部識別提供者必須提供 OIDC 探索端點。 此端點可用來取得更多組態資料。

發現網址 必須 使用該 https 方案,且 結尾必須/.well-known/openid-configuration。 你不能在這個段之後加入任何額外的路徑段、查詢字串或片段。 完整的發現網址必須包含在你建立外部驗證方法時設定的發現 URL 中。

端點會回傳一個託管於該處的提供者元資料 JSON 文件 。 端點還必須回傳有效的內容長度標頭。 元資料文件 必須 符合 OpenID Connect Discovery 1.0 (包含勘誤集 2),並包含所有必要的 OIDC 元資料欄位。

提供者的元資料必須包含下表中列出的資料。 此擴充性案例需要這些值。 JSON 元資料文件可能包含更多資訊。

關於包含提供者元資料值的 OIDC 文件,請參見 提供者元資料

詮釋資料值 註解
Issuer 必須是 HTTPS URL。

發行者的值 必須 與配置的發行者、探索文件中的發行者值,以及提供者服務所發出的代幣中的權限聲明完全匹配。

發行器 包含埠段或路徑區段,但 不得 包含查詢參數或片段識別碼。
authorization_endpoint Microsoft Entra ID 用於授權通訊的端點。 此端點必須列為允許應用程式的其中一個回覆 URL。
jwks_uri Microsoft Entra ID 能找到驗證提供者簽章所需的公開金鑰的位置。 jwks_uri 是 HTTPS 端點,且不得包含查詢參數或片段識別碼。

JSON Web Key(JWK)x5c 參數必須存在,以便提供所需的 X.509 鍵表示。
scopes_supported openid 其他數值也可能包含,但並非必須。
response_types_supported id_token 其他數值也可能包含,但並非必須。
subject_types_supported
id_token_signing_alg_values_supported Microsoft 支援 RS256。
claim_types_supported normal 此屬性為可選,但若存在,應包含 normal 價值。 其他數值也可能被納入。
https://customcaserver.azurewebsites.net/v2.0/.well-known/openid-configuration
{
  "authorization_endpoint": "https://customcaserver.azurewebsites.net/api/Authorize",
  "claims_supported": [
    "email"
  ],
  "grant_types_supported": [
    "implicit"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256"
  ],
  "issuer": "https://customcaserver.azurewebsites.net/v2.0",
  "jwks_uri": "https://customcaserver.azurewebsites.net/.well-known/jwks",
  "response_modes_supported": [
    "form_post"
  ],
  "response_types_supported": [
    "id_token"
  ],
  "scopes_supported": [
    "openid"
  ],
  "SigningKeys": [],
  "subject_types_supported": [
    "public"
  ]
}

https://customcaserver.azurewebsites.net/.well-known/jwks
{
  "keys": [
    {
      "kty": "RSA",
      "use": "sig",
      "kid": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
      "x5t": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
      "n": "jq277LRoE6WKM0awT3b...vt8J6MZvmgboVB9S5CMQ",
      "e": "AQAB",
      "x5c": [
        "cZa3jz...Wo0rzA="
      ]
    }
  ]
}

注意

JWK x5c 參數必須存在才能提供所提供密鑰的 X.509 表示形式。

發現網址與發行者範例

以下範例說明此整合中有效與無效的發現 URL 及發行者組合。

有效的探索網址和發行者配對
  • 探索 URL:https://example.com/.well-known/openid-configuration
    發行人: https://example.com
  • 探索 URL:https://example.com:8443/.well-known/openid-configuration
    發行人: https://example.com:8443
  • 探索 URL:https://example.com/tenant1/.well-known/openid-configuration
    發行人: https://example.com/tenant1
無效的發現網址與發行者範例
  • 探索 URL:https://example.com/.well-known/openid-configuration
    發行者: https://example.com:443/ (發行者中明確新增預設 HTTPS 埠口。)
  • 探索 URL:https://example.com:443/.well-known/openid-configuration
    發行商: https://example.com/ (埠口不匹配。)
  • 探索 URL:https://example.com/.well-known/openid-configuration?client_id=0oasxuxkghOniBjlQ697
    發行者: https://example.com (你不能在發現網址中包含查詢字串。)

提供者中繼資料快取

為了提升效能,Microsoft Entra ID 會快取提供者回傳的元資料,包括金鑰。 提供者元資料快取防止每次 Microsoft Entra ID 與外部身份提供者通訊時產生發現呼叫。

此快取每 24 小時刷新一次。 我們建議醫療提供者依以下步驟完成轉讓鑰匙:

  1. 現有證書新證書 發佈於 jwks_uri
  2. 持續用 現有憑證 登入,直到 Microsoft Entra ID 快取被刷新、過期或更新(每兩天一次)。
  3. 改用 新證照登入。

我們不會發佈金鑰變換的排程。 相依服務必須準備好處理立即和定期的變換。 我們建議使用專門為此目的打造的函式庫,例如 azure-activedirectory-identitymodel-extensions-for-dotnet。 如需詳細資訊,請參閱 在 Microsoft Entra ID 中簽署密鑰變換

發現 Microsoft Entra ID 中繼資料

提供者也需要擷取 Microsoft Entra ID 的公開金鑰,以驗證 Microsoft Entra ID 所發行的權杖。

Microsoft Entra ID 中繼資料發現端點:

  • 全域 Azure:https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration
  • Azure 專為美國政府打造的解決方案:https://login.microsoftonline.us/common/v2.0/.well-known/openid-configuration
  • 由 21Vianet 營運的 Microsoft Azure:https://login.partner.microsoftonline.cn/common/v2.0/.well-known/openid-configuration

你可以使用令牌中的公鑰識別碼(JSON Web Signature (JWS)中的「kid」)來判斷從該 jwks_uri 屬性取得的哪些金鑰應該用來驗證 Microsoft Entra ID 令牌簽章。

驗證 Microsoft Entra ID 核發的權杖

關於如何驗證 Microsoft Entra ID 發行的憑證,請參見 「驗證 ID 憑證」。 我們的探索中繼資料使用者沒有特別的步驟。

你可以在 Microsoft 的憑證驗證函式庫中找到所有關於令牌驗證的細節。 你也可以透過瀏覽原始碼來確認這些細節。 如需範例,請參閱 Azure 範例

驗證成功後,你可以處理理賠有效載荷,取得使用者及其租戶的詳細資訊。

注意

驗證 id_token_hint 值很重要,以確保它來自 Microsoft 租戶並代表你的整合。 id_token_hint價值應被充分驗證,特別是簽名、發行人、受眾及其他理賠價值。

Microsoft Entra ID 致電外部識別提供者

Microsoft Entra ID 會使用 OIDC 隱含流程 與外部識別提供者通訊。 使用此流程時,與提供者的通訊僅使用提供者的授權端點進行。

為了通知提供者某個特定使用者的請求,Microsoft Entra ID 會透過參數 id_token_hint 傳遞一個令牌。

此呼叫是透過 POST 請求進行,因為會傳遞大量參數給提供者。 龐大的清單會防止使用限制請求長度 GET 的瀏覽器。

認證請求參數列於下表。

注意

提供者應該忽略請求中的其他參數,除非它們列在下表中。

認證查詢參數 說明
scope openid
response_type Id_token 用於隱含流程的值。
response_mode form_post 我們使用表單 POST 以避免大型網址的問題。 我們預期所有參數都會在請求正文中傳送。
client_id 外部身份提供者提供給 Microsoft Entra ID 的用戶端 ID,例如 ABCD。 如需詳細資訊,請參閱 外部驗證方法描述
redirect_uri 外部身份提供者傳送回應至重定向的統一資源識別碼(URI)id_token_hint。 請參閱此數據表之後的 範例
nonce Microsoft Entra ID 所產生的隨機字串。 它可以是會話識別碼。 若有提供,則必須在回應中傳回至 Microsoft Entra ID。
state 若提供,供應者應在其回應中返回state 。 Microsoft Entra ID 用 state 來記錄通話的上下文。
id_token_hint Microsoft Entra ID 為使用者發出的憑證,並傳遞給提供者。
claims 包含所要求聲明的 JSON 資料塊。 如需此參數格式的詳細資訊,請參閱 OIDC 檔中 的宣告要求參數 ,以及此數據表之後的 範例
client-request-id 全球唯一識別碼 (GUID) 值 提供者可以記錄此值,以協助針對問題進行疑難排解。

重定向 URI 範例

重定向 URI 應該在非頻段的服務提供者註冊。 您可以傳送的重定向 URI 有:

  • 全域 Azure:https://login.microsoftonline.com/common/federation/externalauthprovider
  • Azure 專為美國政府打造的解決方案:https://login.microsoftonline.us/common/federation/externalauthprovider
  • 由 21Vianet 營運的 Microsoft Azure:https://login.partner.microsoftonline.cn/common/federation/externalauthprovider

符合多重身份驗證(MFA)的外部認證方法範例

這裡有一個外部驗證方法符合多重身份驗證(MFA)要求的例子。 此範例可幫助供應者了解 Microsoft Entra ID 所預期的宣告。

Microsoft Entra ID 使用acr值及amr值的組合來驗證:

  • 第二個因素所用的認證方法符合多重身份驗證(MFA)的要求。
  • 此認證方式與用於完成 Microsoft Entra ID 登入第一項因素的類型不同。
{
  "id_token": {
    "acr": {
      "essential": true,
      "values":["possessionorinherence"]
    },
    "amr": {
      "essential": true,
      "values": ["face", "fido", "fpt", "hwk", "iris", "otp", "pop", "retina", "sc", "sms", "swk", "tel", "vbm"]
    }
  }
}

預設的id_token_hint聲明

本節描述請求中作為 id_token_hint 傳遞給提供者的令牌的必要內容。 該代幣可能包含比下表所示更多的權利要求。

索賠 說明
iss 識別建構和傳回權杖的安全性權杖服務 (STS),以及使用者進行驗證的 Microsoft Entra ID 租用戶。

您的應用程式應該使用宣告中的 GUID 部分來限制能登入應用程式的租用戶集合,若適用。

發行者應該與用戶在租戶中登入時所使用的 OIDC Discovery JSON 元資料中的發行者網址相符。
aud 應將對象設定為外部身份提供者的 Microsoft Entra ID 用戶端 ID。
exp 過期時間設定為在發行時間之後的短時間內過期,足以避免時間扭曲問題。 由於此令牌並非用於驗證,因此其有效期限沒有理由大幅超過請求的時間。
iat 照常設定發行時間。
tid 租用戶識別碼用於將租用戶公告給提供者。 它代表使用者所來自的 Microsoft Entra ID 租戶。
oid Microsoft 身分識別平台中物件的不可變識別碼。 在此情況下,它是使用者帳戶。 它也可用來安全地執行授權檢查,以及做為資料庫資料表中的索引鍵。

此識別碼可跨應用程式唯一識別使用者。 不同的兩個應用程式登入同一位使用者時,在 oid 宣告中取得相同的值。 因此,該 oid 主張可用於查詢 Microsoft 線上服務,例如 Microsoft Graph。
preferred_username 提供一個可辨識的值,以識別標記的主體。 此值不保證是租用戶中的唯一值,並且應該僅用於顯示目的。
sub 使用者在發行者處的主體識別符。 權杖宣告資訊的主體,例如應用程式的使用者。

這個值不可變,而且無法重新指派或重複使用。 它可用於安全執行授權檢查,例如當憑證用於存取資源時。 它可以作為資料庫資料表中的鍵。

由於主體總是存在於 Microsoft Entra ID 所簽發的權杖中,我們建議您在一般用途的授權系統中使用此值。 然而,主體是成對識別碼,且對特定應用程式 ID 唯一適用。

因此,若單一使用者使用兩個不同的客戶端 ID 登入兩個不同的應用程式,這些應用程式會獲得兩個不同的主旨值

你可能會想要也可能不想要這樣的結果,取決於你的架構和隱私需求。

另請參閱 oid 宣告(此宣告在同一租戶中的應用程式之間保持不變)。

為了防止代幣被用於除提示外的任何用途,代幣會以過期狀態發行。 該令牌已簽署,並可透過公開的 Microsoft Entra ID 發現元資料進行驗證。

來自 Microsoft Entra ID 的選擇性聲明

如果供應商需要從 Microsoft Entra ID 取得可選的宣告,你可以設定以下可選的宣告:id_tokengiven_namefamily_namepreferred_usernameupn。 如需詳細資訊,請參閱 選擇性宣告

我們建議你在 Azure 中使用 oid and tid 聲明,將提供者端的帳號與帳號關聯起來。 這兩個聲明保證對於租用戶中的帳戶來說是獨一無二的。

id_token_hint範例

這裡有一個目錄成員的例子 id_token_hint

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w"
}.{
  "ver": "2.0",
  "iss": "https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0",
  "sub": "mBfcvuhSHkDWVgV72x2ruIYdSsPSvcj2R0qfc6mGEAA",
  "aud": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "exp": 1536093790,
  "iat": 1536093791,
  "nbf": 1536093791,
  "name": "Test User 2",
  "preferred_username": "testuser2@contoso.com"
  "oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
  "tid": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
  }.

這裡有一個租戶中來賓使用者的範例 id_token_hint

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w"
}.{
  "ver": "2.0",
  "iss": "https://login.microsoftonline.com/9122040d-6c67-4c5b-b112-36a304b66dad/v2.0",
  "sub": "mBfcvuhSHkDWVgV72x2ruIYdSsPSvcj2R0qfc6mGEAA",
  "aud": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "exp": 1536093790,
  "iat": 1536093791,
  "nbf": 1536093791,
  "name": "External Test User (Hotmail)",
  "preferred_username": "externaltestuser@hotmail.com",
  "oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
  "tid": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
  }.


對外部身份提供者的建議行動

我們建議外部身份提供者完成以下事項。 此清單並不詳盡,且提供者應該在其認為適合時完成其他驗證步驟。

  • 摘自請求:

    • 請確保 redirect_uri 已按 Microsoft Entra ID 呼叫外部身份提供者 中的描述發佈。
    • 確保設定的發現 URL 使用 HTTPS,且結尾為 /.well-known/openid-configuration。 也要確保它不包含查詢參數或片段識別碼。 確保發行人的價值與證據披露文件完全一致。
    • 確保 有 client_id 給 Microsoft Entra ID 指派的值,例如 ABCD
    • 提供者應先 驗證 Microsoft Entra ID 所呈現的資訊 id_token_hint
  • 摘自以下聲明 id_token_hint

    • (可選)打電話給 Microsoft Graph ,查詢該使用者的其他細節。 oid tid與 的id_token_hint主張在這方面非常有用。 id_token_hint所提供的宣告詳情,請參見 預設id_token_hint宣告
  • 執行服務提供者產品的其他認證活動。

  • 根據使用者行為的結果及其他因素,提供者會建立並回傳回應給 Microsoft Entra ID,詳見下一節說明。

Microsoft Entra ID 對提供者回應的處理

提供者需要使用 POST 來回傳回應給 redirect_uri。 應該在成功的回應上提供下列參數:

參數 說明
id_token 外部身份提供者發出的憑證。
state 在要求中傳遞的相同狀態 (如果有的話)。 否則,這個值不應該存在。

成功後,提供者會為使用者發出 id_token 一個數值。 Microsoft Entra ID 利用已公布的 OIDC 元資料驗證令牌是否包含預期權利要求,並執行 OIDC 要求的其他令牌驗證。

索賠 說明
iss 發行人:必須與提供者的探索元資料中的發行人匹配。
aud 受眾:Microsoft Entra ID 用戶端 ID。 請參見 client_idMicrosoft Entra ID 呼叫外部身份提供者的設定。
exp 到期時間:照常設定。
iat 發出時間:照常設定。
sub 主體:必須與發送此請求的 id_token_hint 中的主體相符。
nonce 就是請求中傳遞的相同nonce值。
acr acr關於認證請求的聲明。 此值應該符合傳送至起始此要求之要求中的其中一個值。 只應返回一項 acr 理賠。 關於主張清單,請參見 支持 acr 主張
amr amr關於所使用的認證方法的權利要求。 此值應該以陣列的形式傳回,且應該只傳回一個方法宣告。 關於主張清單,請參見 支持 amr 主張
支援的 ACR 聲明
索賠 備註
possessionorinherence 認證必須使用基於所有權或固有性的因素。
knowledgeorpossession 認證必須使用知識性或持有性因素。
knowledgeorinherence 認證必須使用基於知識或固有的因素。
knowledgeorpossessionorinherence 認證必須使用基於知識、擁有或固有的因素。
knowledge 認證必須使用知識型因素。
possession 認證必須使用基於所有權的因素。
inherence 認證必須使用基於固有性的因子。
支援的 amr 聲明
索賠 備註
face 臉部生物辨識
fido 使用 FIDO2
fpt 使用指紋進行生物特徵辨識
hwk 擁有硬體安全金鑰的證明
iris 使用虹膜掃描進行生物特徵辨識
otp 一次性密碼
pop 擁有權證明
retina 使用視網膜掃描進行生物特徵辨識
sc 智慧卡
sms 傳送文字訊息至已註冊的號碼進行確認
swk 確認是否有軟體安全金鑰
tel 透過電話確認
vbm 使用聲紋進行生物特徵辨識

Microsoft Entra ID 要求 MFA 必須滿意才能發行帶有 MFA 主張的令牌。 因此,只有具有不同類型的方法才能滿足第二個因素需求。 如先前所述,可用來滿足第二個因素的不同方法類型是知識、擁有和固有。

Microsoft Entra ID 會根據下表檢查類型映射。

申請方法 類型 備註
face 固有 生物辨識與臉部辨識。
fido 擁有 FIDO2 二手。 有些實作可能也需要生物辨識,但持有方法類型會被映射,因為它是主要的安全屬性。
fpt 固有 指紋生物辨識
hwk 擁有 持有硬體保護金鑰的證明。
iris 固有 生物辨識搭配虹膜掃描。
otp 擁有 一次性密碼。
pop 擁有 持有權證明。
retina 固有 視網膜掃描的生物特徵。
sc 擁有 智慧卡。
sms 擁有 傳送確認簡訊到已註冊的號碼。
swk 擁有 軟體安全金鑰存在的證明。
tel 擁有 電話確認。
vbm 固有 生物辨識技術中的聲紋識別。

Microsoft Entra ID 認為當令牌沒有問題時,MFA 就已滿足,然後會向使用者發放此令牌。 否則,使用者的請求將失敗。

失敗會以發出錯誤回應參數來表示。

參數 說明
錯誤 ASCII 錯誤碼,例如access_deniedtemporarily_unavailable

Microsoft Entra ID 若在回應中有 id_token parameter 且令牌有效,則視為請求成功。 否則,要求會被視為失敗。 Microsoft Entra ID 因條件存取政策的要求而未能通過原始驗證嘗試。

Microsoft Entra ID 會在將用戶重新導向至提供者後大約 5 分鐘,捨棄其端的驗證嘗試狀態。

Microsoft Entra ID 錯誤回應處理

Microsoft Azure 服務使用一個 correlationId 值來關聯各種內部與外部系統間的通話。 它可用作整個作業或流程的通用識別碼,這些識別碼可能牽涉到多個 HTTP 呼叫。 當任何操作發生錯誤時,回應中會包含一個名為 Correlation ID 的欄位。

當你聯絡 Microsoft 支援或類似服務時,請提供 相關 ID 值。 這有助於更快存取遙測數據和日誌。

例如:

ENTRA IDSTS70002: Error validating credentials. ENTRA IDSTS50012: External ID token from issuer 'https://sts.XXXXXXXXX.com/auth/realms/XXXXXXXXXmfa' failed signature verification. KeyID of token is 'A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u'

Trace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333

Correlation ID: aaaa0000-bb11-2222-33cc-444444dddddd

Timestamp: 2023-07-24 16:51:34Z

自訂控制與外部認證方法

在 Microsoft Entra ID 中,外部認證方法與條件存取自訂控制可同時運作,讓客戶準備並遷移至外部驗證方法。

目前使用自訂控制項與外部提供者整合的客戶可以繼續使用它們,以及他們設定用來管理存取的任何條件式存取原則。 我們建議管理員在遷移期間建立一套平行的條件存取政策:

  • 政策應該使用需要多重要素驗證的授權控制,而不是自訂控制。

    注意

    基於包括內建多因素驗證強度在內的認證強度設定,授權控制無法由外部驗證方法滿足。 原則應該只使用 [需要多重要素驗證] 來設定。

  • 新的原則可以先使用使用者子集進行測試。 測試群組被排除在需要自訂控制的政策之外,並包含在需要多重驗證的政策中。 當管理員確定需要多重身份驗證的政策已透過外部驗證方式達成時,管理員即可將所有必要使用者納入多重認證授權。 自訂控制的政策可以移到 關閉 設定。

整合支援

如果你在與 Microsoft Entra ID 建立外部驗證方法整合時遇到問題,Microsoft 客戶體驗工程(CxE)獨立解決方案供應商(ISV)可能能協助你。 若要與 CxE ISV 小組互動,請提交 協助要求

參考資料

詞彙

術語 說明
MFA 多重要素驗證。
外部認證方法 一種來自非 Microsoft Entra ID 提供者的認證方法,作為使用者認證的一部分。
OIDC OpenID Connect 是一種基於 OAuth 2.0 的認證協定。
00001111-aaaa-2222-bbbb-3333cccc4444 這是一個整合於外部認證方法的appid值範例。