本文介绍了外部身份验证提供程序如何连接到 Microsoft Entra 多重身份验证(MFA)。
重要
外部身份验证提供程序的使用目前为预览版。 有关预览版的详细信息,请参阅 联机服务的通用许可条款。
通过此预览版,您可以使用外部身份验证提供程序,将其与 Microsoft Entra ID 租户集成,从而实现外部身份验证。 外部身份验证方法可以满足对资源或应用程序的访问权限的 MFA 要求的第二个因素。 外部身份验证方法至少需要Microsoft Entra ID P1 许可证。
当用户登录时,将评估租户策略。 身份验证要求取决于用户尝试访问的资源。
多个策略可能会应用于登录,具体取决于其参数。 这些参数包括用户和组、应用程序、平台、登录风险级别等。
根据身份验证要求,用户可能需要使用另一个因素登录以满足 MFA 要求。 第二个因子的类型需要补充第一个因子的类型。
租户管理员将外部身份验证方法添加到 Microsoft Entra ID。 如果租户需要 MFA 的外部身份验证方法,则Microsoft Entra ID 验证两者后,登录被视为满足 MFA 要求:
- 第一个要素是通过 Microsoft Entra ID 完成的。
- 使用外部身份验证方法完成的第二个因素。
该验证满足两种或更多类型方法的 MFA 要求:
- 已知内容(知识)
- 已有内容(所有权)
- 你的身份信息(固有特性)
外部身份验证方法是在 OpenID Connect(OIDC)的基础上实现的。 此实现至少需要三个面向公众的终结点来实现外部身份验证方法:
- OIDC 发现端点,如提供程序元数据发现中所述
- 有效的 OIDC 身份验证终结点
- 发布提供程序公共证书的 URL
下面是关于使用外部身份验证方法的登录过程:
用户尝试使用第一个因素(例如密码)登录受 Microsoft Entra ID 保护的应用程序。
Microsoft Entra ID 确定需要满足另一个认证因素(例如,如果条件访问策略需要多重身份验证(MFA))。
用户选择外部身份验证方法作为第二个因素。
Microsoft Entra ID 会将用户的浏览器会话重定向到外部身份验证方法的 URL。
从管理员创建外部身份验证方法时预配的发现 URL 中发现此 URL。
应用程序提供过期或即将过期的令牌,其中包含用于标识用户和租户的信息。
外部身份验证提供程序验证令牌是否来自 Microsoft Entra ID,并检查令牌的内容。
外部身份验证提供程序可能会调用 Microsoft Graph 以获取有关用户的其他信息。
外部身份验证提供程序执行它认为必要的任何作,例如使用凭据对用户进行身份验证。
外部身份验证提供程序将用户重定向回具有有效令牌的 Microsoft Entra ID,包括所有必需的声明。
Microsoft Entra ID 验证令牌的签名是否来自配置的外部身份验证提供程序,然后检查令牌的内容。
Microsoft Entra ID 根据要求验证令牌。
如果验证成功,则表示用户满足 MFA 要求。 用户可能还必须满足其他策略要求。
使用 Microsoft Entra ID 配置新的外部身份验证提供程序
若要发布 id_token_hint,外部身份验证方法需要一个表示集成的应用程序。 可以通过两种方式创建应用程序:
- 在每个使用外部提供程序的租户中。
- 作为一个多租户应用程序。 若要为其租户启用集成,特权角色管理员需要授予许可。
使用多租户应用程序可以降低每个租户出现配置错误的可能性。 提供程序可以在一个地方对元数据(例如答复 URL)进行更改,而不是要求每个租户自己进行更改。
若要配置多租户应用程序,提供程序管理员必须首先:
创建 Microsoft Entra ID 租户(如果他们还没有)。
在其租户中注册应用程序。
在应用程序中,在“支持的帐户类型”下,选择任何组织目录中的帐户(任何 Microsoft Entra ID 租户 - 多租户)。
为 Microsoft Graph 添加委托的权限
openid和profile值。不要在此应用程序中发布任何范围。
将外部标识提供者的有效
authorization_endpointURL 作为回复 URL 添加到该应用程序。注释
在应用程序注册中,将提供程序发现文档中提供的
authorization_endpoint值作为重定向 URL 添加。 否则,会收到以下错误:“ENTRA IDSTS50161:无法验证外部声明提供程序的授权 URL!
应用程序注册过程会创建一个具有多个属性的应用程序。 在我们的场景中,你需要这些属性。
| 资产 | DESCRIPTION |
|---|---|
| 对象标识符 | 提供程序可以使用 Microsoft Graph 的对象 ID 来查询应用程序信息。 提供程序可以使用对象 ID 以编程方式检索和编辑应用程序信息。 |
| 应用程序 ID | 提供程序可以使用应用程序 ID 作为其应用程序的客户端 ID。 |
| 主页 URL | 提供程序主页 URL 并没有特别具体的用途,但您需要它来注册应用程序。 |
| 回复 URL | 提供程序的有效重定向 URL。 应匹配为提供程序租户设置的提供程序主机 URL。 已注册的回复 URL 之一必须与由 Microsoft Entra ID 通过 OIDC 发现为主机 URL 检索的前缀值 authorization_endpoint 匹配。 |
支持集成的另一个有效模型是为每个租户使用应用程序。 如果使用单租户注册,则租户管理员需要为单租户应用程序创建具有上表中属性的应用程序注册。
注释
需要管理员同意来处理使用外部身份验证方法的租户中的应用程序。 如果未授予许可,则当管理员尝试使用外部身份验证方法时,会出现以下错误:“AADSTS900491:找不到应用 ID<的服务主体>。”
配置可选声明
提供程序可以使用 可选声明来 id_token配置更多声明。
注释
无论应用程序是如何创建的,提供程序都需要为每个云环境配置可选声明。
将外部身份验证方法添加到 Microsoft Entra ID
外部标识提供者信息存储在每个租户的身份验证方法策略中。 提供程序信息被存储为externalAuthenticationMethodConfiguration类型的身份验证方法。
每个提供程序在策略的列表对象中都有一个条目。 每个条目都需要指明:
- 如果启用了该方法。
- 可以使用该方法的包含组。
- 无法使用该方法的那些被排除的群体。
要为用户登录设置 MFA 要求,具备条件访问管理员角色的用户可以创建一个包含“要求 MFA”许可的策略。 身份验证强度当前不支持外部身份验证方法。
详细了解如何在 Microsoft Entra 管理中心 中添加外部身份验证方法 。
Microsoft Entra ID 与提供程序的交互
后续部分介绍提供程序要求,并包括有关Microsoft Entra ID 如何与提供程序交互的示例。
发现提供程序元数据
外部身份提供者需要提供 OIDC 发现端点。 此终结点用于获取更多配置数据。
发现 URL 必须使用https方案,并且必须以/.well-known/openid-configuration结尾。 在此段之后,不能包含任何其他路径段、查询字符串或片段。 完整发现 URL 必须包含在创建外部身份验证方法时配置的发现 URL 中。
终结点返回托管在那里的提供者元数据 JSON 文档。 终结点还必须返回有效的内容长度标头。 元数据文档 必须 符合 OpenID Connect Discovery 1.0(包含勘误集 2),并且包含所有必需的 OIDC 元数据字段。
提供程序的元数据需要包括下表中列出的数据。 此扩展性方案需要这些值。 JSON 元数据文档可能包含更多信息。
有关包含提供者元数据值的 OIDC 文档,请参阅提供者元数据。
| 元数据值 | 价值 | 注释 |
|---|---|---|
Issuer |
必须是 HTTPS URL。 颁发者值 必须与 配置的颁发者、发现文档中的颁发者值以及 iss 提供程序服务颁发的令牌中的声明匹配。颁发者 可能包含 端口或路径段,但 不得 包含查询参数或片段标识符。 |
|
authorization_endpoint |
Microsoft Entra ID 与之通信以进行授权的终结点。 此终结点必须作为允许应用程序的回复 URL 之一提供。 | |
jwks_uri |
Microsoft Entra ID 可以在该位置找到用于验证提供程序颁发的签名所需的公钥。 必须是 jwks_uri HTTPS 终结点,并且不得包含查询参数或片段标识符。必须提供 JSON Web 密钥 (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.chinacloudsites.cn/v2.0/.well-known/openid-configuration
{
"authorization_endpoint": "https://customcaserver.chinacloudsites.cn/api/Authorize",
"claims_supported": [
"email"
],
"grant_types_supported": [
"implicit"
],
"id_token_signing_alg_values_supported": [
"RS256"
],
"issuer": "https://customcaserver.chinacloudsites.cn/v2.0",
"jwks_uri": "https://customcaserver.chinacloudsites.cn/.well-known/jwks",
"response_modes_supported": [
"form_post"
],
"response_types_supported": [
"id_token"
],
"scopes_supported": [
"openid"
],
"SigningKeys": [],
"subject_types_supported": [
"public"
]
}
https://customcaserver.chinacloudsites.cn/.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与颁发者的组合。
有效的发现 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 和颁发者示例无效
- 发现 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(不能在发现 URL 中包含查询字符串。
提供程序元数据高速缓存
为了提高性能,Microsoft Entra ID 缓存提供程序返回的元数据,包括密钥。 每次Microsoft Entra ID 与外部标识提供者通信时,提供程序元数据缓存都会阻止发现调用。
此缓存每 24 小时刷新一次。 建议提供商按照以下步骤滚动更新其密钥:
- 在中发布现有证书和
jwks_uri。 - 使用 现有证书 登录,直到Microsoft Entra ID 缓存刷新、过期或更新(每 2 天)。
- 切换到使用 New Cert 登录。
我们不会发布密钥滚动更新的计划。 必须准备好依赖服务来处理即时和定期滚动更新。 我们建议使用为此而构建的专用库,例如 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 - 由 21Vianet 运营的 Microsoft Azure:
https://login.partner.microsoftonline.cn/common/v2.0/.well-known/openid-configuration
可以使用令牌中的公钥标识符(JSON Web 签名(JWS)中的“kid”)来确定从 jwks_uri 属性检索到的密钥中应使用哪个密钥来验证 Microsoft Entra ID 令牌签名。
验证由 Microsoft Entra ID 颁发的令牌
有关如何验证Microsoft Entra ID 颁发的令牌的信息,请参阅 “验证 ID 令牌”。 对于发现元数据的使用者,无需执行特殊步骤。
可以在Microsoft的 令牌验证库中找到有关令牌验证的所有详细信息。 还可以通过浏览源代码来确定这些详细信息。 有关示例,请参阅 Azure 示例。
验证成功后,可以使用声明负载来获取有关用户及其租户的详细信息。
注释
请务必验证 id_token_hint 的值,以确保它来自微软租户,并代表你的集成。 应对id_token_hint的值进行全面验证,尤其要验证签名、颁发者、受众和其他声明值。
对外部标识提供者的 Microsoft Entra ID 调用
Microsoft Entra ID 使用 OIDC 隐式流 与外部标识提供者通信。 使用此流时,仅使用提供程序的授权终结点与提供程序通信。
为了通知提供程序关于 Microsoft Entra ID 针对哪个用户提出请求,Microsoft Entra ID 通过 id_token_hint 参数传递一个令牌。
此调用是通过 POST 请求进行的,因为将大量参数列表传递给提供程序。 大型列表可防止使用限制请求长度的 GET 浏览器。
下表中列出了身份验证请求参数。
注释
除非下表中列出了这些参数,否则提供程序应忽略请求中的其他参数。
| 身份验证查询参数 | 价值 | DESCRIPTION |
|---|---|---|
scope |
openid |
|
response_type |
Id_token |
用于隐式流的值。 |
response_mode |
form_post |
我们使用格式 POST 来避免大型 URL 的问题。 我们预计所有参数都将在请求正文中发送。 |
client_id |
提供给外部标识提供者Microsoft Entra ID 的客户端 ID,例如 ABCD。 有关详细信息,请参阅 外部身份验证方法说明。 |
|
redirect_uri |
外部标识提供者将响应发送到的重定向统一资源标识符URI(id_token_hint)。 请参阅此表后面的 示例 。 |
|
nonce |
由 Microsoft Entra ID 生成的随机字符串。 它可以是会话 ID。 如果已提供,则需要在回复 Microsoft Entra ID 的响应中返回。 | |
state |
如果传入,提供程序应在其响应中返回 state 。 Microsoft Entra ID 使用 state 来保留有关调用的上下文。 |
|
id_token_hint |
一个令牌,由 Microsoft Entra ID 为用户签发,并传递给提供商以供使用。 | |
claims |
包含所请求声明的 JSON Blob。 有关此参数格式的详细信息,请参阅 OIDC 文档中 的声明请求参数 ,以及此表后面的 示例 。 | |
client-request-id |
GUID 值 | 提供程序可以记录此值以帮助解决问题。 |
重定向 URI 的示例
重定向 URI 应注册到提供程序带外。 可以发送的重定向 URI 为:
- 全球 Azure:
https://login.microsoftonline.com/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 传递的令牌所需内容。 令牌可能包含的声明信息可能多于下表所示。
| 索赔 | 价值 | DESCRIPTION |
|---|---|---|
iss |
标识构造并返回令牌的安全令牌服务 (STS),以及对用户进行身份验证的 Microsoft Entra ID 租户。 应用应该使用声明的 GUID 部分限制可登录应用的租户集(如果适用)。 颁发者应与用户登录的租户的 OIDC 发现机制 JSON 元数据中的颁发者 URL 匹配。 |
|
aud |
应将访问群体设置为Microsoft Entra ID 的外部标识提供者的客户端 ID。 | |
exp |
过期时间设置为在发布时间后不久过期,足以避免时间偏差问题。 由于此令牌不用于身份验证,因此其有效性没有理由比请求的持续时间长很多。 | |
iat |
像往常一样设置发布时间。 | |
tid |
租户 ID 用于将租户播发到提供程序。 它代表用户所在的 Microsoft Entra ID 租户。 | |
oid |
Microsoft 标识平台中对象的不可变标识符。 在此示例中,它是一个用户帐户。 还可以使用它安全地执行授权检查,并将它用作数据库表中的密钥。 此 ID 跨应用程序唯一标识用户。 登录同一用户的两个不同的应用程序在 oid 声明中收到相同的值。 因此,可以在针对 Microsoft 在线服务的查询中使用oid声明,例如 Microsoft Graph。 |
|
preferred_username |
提供一个用户可读值,用于标识令牌使用者。 不保证该值在租户内唯一,仅用于显示目的。 | |
sub |
颁发者用户的主题标识符。 令牌针对其断言信息的主体,例如应用程序的用户。 此值是不可变的,无法重新分配或重复使用。 它可用于安全地执行授权检查,例如,使用令牌访问资源时。 它可以用作数据库表中的键。 因为使用者始终会在 Microsoft Entra ID 颁发的令牌中存在,我们建议在常规用途授权系统中使用此值。 但是,主题是一个成对标识符,它对于特定应用程序 ID 是唯一的。 因此,如果单个用户使用两个不同的客户端 ID 登录到两个不同的应用程序,则这些应用程序会收到两个不同的主题声明值。 根据你的体系结构和隐私要求,你可能希望或不想要此结果。 请参阅相关声明(该声明在租户的各个应用中保持不变)。 |
为了防止令牌用于提示以外的任何用途,它以过期状态发放。 令牌已签名,可以使用已发布的Microsoft Entra ID 发现元数据进行验证。
Microsoft Entra ID 中的可选声明
如果提供程序需要来自 Microsoft Entra ID 的可选声明,可以为以下项目配置可选声明:id_token、given_name、family_name、preferred_username、upn。 有关详细信息,请参阅 可选声明。
声明的推荐使用方式
我们建议使用 oid 和 tid 声明将提供程序端的帐户与 Azure 中的帐户相关联。 这两个声明对于 Azure AD 中的帐户来说一定是唯一的。
id_token_hint示例
下面是目录成员的示例 id_token_hint :
{
"typ": "JWT",
"alg": "RS256",
"kid": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w"
}.{
"ver": "2.0",
"iss": "https://login.partner.microsoftonline.cn/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.partner.microsoftonline.cn/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"
}.
针对外部标识提供者的建议操作
建议外部身份提供者完成以下项目。 此列表并非详尽无遗,提供程序应完成其认为合适的其他验证步骤。
从请求中:
来自 `
id_token_hint` 中声明的内容:- (可选)调用 Microsoft Graph 以获取有关此用户的其他详细信息。 在这方面,
oid和tid声明在id_token_hint中非常有用。 有关所提供的id_token_hint声明的详细信息,请参阅 默认id_token_hint声明。
- (可选)调用 Microsoft Graph 以获取有关此用户的其他详细信息。 在这方面,
为提供商的产品执行任何其他身份验证活动。
根据用户作的结果和其他因素,提供程序随后将构造响应并将其发送回Microsoft Entra ID,如下一节中所述。
提供程序响应的 Microsoft Entra ID 处理
提供程序需要使用POST将响应发送回redirect_uri。 成功响应时应提供以下参数:
| 参数 | 价值 | DESCRIPTION |
|---|---|---|
id_token |
外部身份提供者签发的令牌。 | |
state |
与请求中传递的状态相同(如果有)。 否则,不应出现此值。 |
成功后,提供程序将为用户发出 id_token 值。 Microsoft Entra ID 使用已发布的 OIDC 元数据来验证令牌是否包含预期的声明,并执行 OIDC 所需的任何其他令牌验证。
| 索赔 | 价值 | DESCRIPTION |
|---|---|---|
iss |
颁发者:必须与提供程序的发现元数据中的颁发者匹配。 | |
aud |
受众:Microsoft Entra ID 客户端 ID。 请参阅client_idMicrosoft对外部标识提供者的 Entra ID 调用。 |
|
exp |
过期时间:照常设置。 | |
iat |
发出时间:照常设置。 | |
sub |
主题:必须与用于发起此请求的 id_token_hint 中的 sub 字段相匹配。 | |
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 得到满足。 否则,用户的请求将失败。
失败通过发出错误响应参数来指示。
| 参数 | 价值 | DESCRIPTION |
|---|---|---|
| 错误 | ASCII 错误代码,例如 access_denied 或 temporarily_unavailable |
Microsoft Entra ID 将请求视为成功的条件是:响应中存在 id_token parameter,且令牌有效。 否则,请求将被视为失败。 Microsoft Entra ID 由于条件访问策略的要求,无法尝试原始身份验证。
在重定向到提供程序后大约 5 分钟,Microsoft Entra ID 将放弃身份验证尝试的状态。
Microsoft Entra ID 错误响应处理
Azure 服务使用 correlationId 值来关联各种内部和外部系统的调用。 它充当可能涉及多个 HTTP 调用的整个操作或流程的公共标识符。 当在任何操作过程中发生错误时,响应将包含一个名为Correlation ID的字段。
联系 Microsoft 支持或类似服务时,请提供 Correlation 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 中,外部身份验证方法和条件访问自定义控件可以并行运行,而客户则准备并迁移到外部身份验证方法。
当前通过使用自定义控件与外部提供程序集成的客户可以继续使用它们以及他们配置用于管理访问的任何条件访问策略。 建议管理员在迁移期间创建一组并行的条件访问策略:
策略应使用 要求多重身份验证 授权控制,而不是自定义控制授予。
注释
外部身份验证方法不满足基于身份验证强度(包括内置 MFA 强度)的授权控制。 策略应仅使用 “需要多重身份验证”进行配置。
可以先对一部分用户测试新策略。 测试组从需要自定义控件的策略中排除,并包含在需要 MFA 的策略中。 如果管理员确信外部身份验证方法满足需要 MFA 的策略,则管理员可以使用 MFA 授权将策略中的所有必需用户包含在策略中。 为自定义控件配置的策略可以移动到 “关闭 ”设置。
集成支持
如果在生成外部身份验证方法与 Microsoft Entra ID 集成时遇到任何问题,Microsoft客户体验工程(CxE)独立解决方案供应商(ISV)可能会提供帮助。 若要与 CxE ISV 团队联系,请提交 请求以获取帮助。
参考文献
术语表
| 术语 | DESCRIPTION |
|---|---|
| MFA | 多因素身份验证。 |
| 外部身份验证方法 | 来自Microsoft Entra ID 以外的提供程序的身份验证方法,用作对用户进行身份验证的一部分。 |
| OIDC | OpenID Connect 是基于 OAuth 2.0 的身份验证协议。 |
00001111-aaaa-2222-bbbb-3333cccc4444 |
外部身份验证方法集成的一个值示例是 appid。 |
相关内容
- 有关如何在 Microsoft Entra 管理中心配置外部身份验证方法的详细信息,请参阅 在 Microsoft(预览版)中管理外部身份验证方法。