我知道这里可能不是问这个问题的最佳地点。但是,经过几天的努力,并且发布在微软论坛,我已经束手无策了。
我们正在利用混合 ADFS 4.0(Server 2016)/ Azure AD / Office 365 设置,其中设备注册和 SSO 工作正常。
我们正在尝试使用基于设备的访问策略启用多因素身份验证。我们不希望“已识别”的设备看到额外的 MFA 提示。我们正在使用微软索赔 Xray。
我们已成功启用 MFA,并将 ADFS 配置为仅在设备无法识别时才提示 MFA。这之所以有效,是因为已识别的设备在 Active Directory 中具有其他属性(isRegisteredUser;isManaged;isKnown;trustType;等等),我们可以针对这些属性采取行动。我们已经在 iPad 上使用 IE、Firefox、Chrome 和 Safari 进行了测试。但是,“DeviceContext”声明仅在通过 iPad 上的 IE 或 Safari 进行身份验证时才会通过。
出于某种原因,当请求来自 Chrome 或 Firefox 时,似乎没有发生设备身份验证。身份验证有效,我们只是看不到任何允许我们根据设备是否已注册做出决定的设备上下文声明。因此,这些浏览器会收到额外的 MFA 提示。
我根本找不到任何与我的问题完全吻合的帖子。有几个帖子很相似,但最终却是不同的问题,或者最终陷入了死胡同。我希望有人有类似的设置,并且知道为什么 Chrome 和 Firefox 不会执行额外的基于设备的身份验证,而 iPad 上的 Safari 会。所有设备都有有效的证书来执行身份验证。
我没有在任何事件日志中看到任何错误。浏览器根本没有发出设备身份验证请求,也没有发出任何设备上下文声明。可能不支持此功能,但我找不到任何信息来表明这一点。
答案1
设备上下文声明对于 ADFS/Azure AD 确定设备是否被识别、管理、合规等必不可少。如果没有这些声明,如果绕过 MFA 依赖于“识别”已知设备,则依赖于 MFA 和 SSO 的方案将无法实现。在 ADFS 中,设备身份验证与用户身份验证一起执行时,将生成设备上下文声明。
我发现在 Windows 7 中,Workplace Joined 计算机是基于每个用户的,并接收存储在“当前用户”证书存储中的设备身份验证证书。在身份验证期间,即使在 Chrome 中也可以使用该证书成功执行设备身份验证。
在 Windows 10 中,我发现 Azure AD 设备注册是针对每台机器的,并且机器会收到存储在“本地机器”证书存储中的设备身份验证证书。在身份验证期间,IE 和 Edge 成功使用此证书完成设备身份验证。Chrome 不会触及“本地机器”证书存储中的任何证书。如果使用 Chrome,设备无法识别,MFA 会失败,并提示用户进行二次身份验证。
这似乎是其他浏览器的一个已知问题,目前还没有合适的解决方案。如果没有进行设备身份验证,则无法识别设备,无法通过条件访问策略绕过 MFA。
微软提供了一个插件对于 Google Chrome,这允许它在使用 MFA 时执行设备身份验证。但是,有几个注意事项需要注意:
- 该插件仅适用于 Chrome,并且仅适用于 Windows 10 Creators Updates(1703)或更新版本。
- 该插件仅适用于 Azure AD 条件访问策略。
- 基于 ADFS 设备的条件访问策略将不起作用。
- 由于之前的限制,Office 365 以外的 ADFS 中的依赖方信任将无法使用该插件。
长话短说,Windows 7 设备身份验证似乎运行良好,如果您使用 Chrome,识别的设备将支持基于设备的条件访问策略。使用 Chrome 的 Windows 10 设备对基于设备的条件访问策略的支持能力有限。移动设备在注册到 MDM 时会收到基于用户的证书,因此它们似乎也支持在管理设备时绕过 MFA。
我认为这里的主要问题是 Chrome 的开发人员故意阻止它访问“本地计算机”证书存储以进行身份验证。这可以通过 Process Monitor 进行验证,也可以通过查看 Chrome 中的证书设置中的可用证书进行验证。
我很遗憾地说,但 Mozilla 继续其固执己见的做法,导致其浏览器在企业中很难使用,并且开发人员使 Firefox 无法访问任何 Windows 证书存储。因此,除非您故意将证书导入 Firefox,否则基于设备的条件访问在任何操作系统上都无法工作。