我知道这可能不是问这个问题的最佳地点。但是,经过几天的努力,并在 Microsoft 论坛上发帖后,我束手无策。
我们正在使用混合 ADFS 4.0 (Server 2016) / Azure AD / Office 365 设置,设备注册和 SSO 工作。
我们正在尝试使用基于设备的访问策略启用多因素身份验证。我们不希望“已识别”的设备看到额外的 MFA 提示。我们正在使用Microsoft Claims Xray评估 ADFS 返回的索赔。
我们已成功启用 MFA 并将 ADFS 配置为仅在设备无法识别时提示 MFA。这是因为被识别的设备在活动目录中具有额外的属性(isRegisteredUser;isManaged;isKnown;trustType;等),我们可以对这些属性采取行动。我们已经在 iPad 上使用 IE、Firefox、Chrome 和 Safari 进行了测试。但是,“DeviceContext”声明仅在从 iPad 上的 IE 或 Safari 完成身份验证时才会出现。
出于某种原因,当从 Chrome 或 Firefox 发出请求时,似乎没有进行设备身份验证。身份验证有效,我们只是看不到任何允许我们根据设备是否已注册做出决定的 devicecontext 声明。因此,这些浏览器会获得额外的 MFA 提示。
我根本无法在网上找到任何符合我确切问题的帖子。有一些线程是相似的,但结果却是不同的问题,或者最终陷入了死胡同。我希望有人有这种类似的设置,并且知道为什么 Chrome 和 Firefox 不会执行额外的基于设备的身份验证,但 iPad 上的 safari 会。所有设备都有有效的证书来执行身份验证。
我在任何事件日志中都没有出现任何错误。浏览器根本不会发出设备身份验证请求,也不会发出 devicecontext 声明。这可能不受支持,但我找不到任何指示一种或另一种方式的信息。
设备上下文声明对于 ADFS/Azure AD 确定设备是否被识别、管理、合规等是必要的。没有它们,如果绕过 MFA 依赖于“识别”已知设备,则依赖于 MFA 和 SSO 的方案将被破坏。当设备身份验证与 ADFS 中的用户身份验证一起执行时,会生成设备上下文声明。
我发现在 Windows 7 中,Workplace Joined 机器是基于每个用户的,并接收存储在“当前用户”证书存储中的设备身份验证证书。在身份验证期间,即使在 Chrome 中也可以使用证书成功执行设备身份验证。
在 Windows 10 中,我发现 Azure AD 设备注册是按机器进行的,并且机器会收到存储在“本地机器”证书存储中的设备身份验证证书。在认证过程中,IE 和 Edge 成功使用此证书完成设备认证。Chrome 不会接触“本地机器”证书存储中的任何证书。如果使用 Chrome 时无法识别设备,则 MFA 会失败,并提示用户进行辅助形式的身份验证。
对于没有合适答案的替代浏览器,这似乎是一个已知问题。如果不进行设备身份验证,就无法通过条件访问策略绕过 MFA 来识别设备。
Microsoft为 Google Chrome提供了一个插件,允许它在使用 MFA 时执行设备身份验证。但是,有几个注意事项需要注意:
长话短说,Windows 7 设备身份验证似乎工作正常,如果您使用 Chrome,识别的设备将支持基于设备的条件访问策略。使用 Chrome 的 Windows 10 设备支持基于设备的条件访问策略的能力有限。移动设备在注册到 MDM 时会收到基于用户的证书,因此它们似乎也支持在管理设备时绕过 MFA。
我认为这里的主要问题是 Chrome 的开发人员故意阻止它访问“本地计算机”证书存储以进行身份验证。这可以通过 Process Monitor 进行验证,也可以通过查看 Chrome 证书设置中的可用证书来验证。
我很抱歉这么说,但 Mozilla 继续他们任性的做法,导致他们的浏览器很难在企业中使用,并且开发人员让 Firefox 无法访问任何 Windows 证书存储。因此,除非您故意将证书导入 Firefox,否则基于设备的条件访问在任何操作系统上都不起作用。