创建 MFA(和 SSO)时出现 AD FS 3.0 事件 ID 364

创建 MFA(和 SSO)时出现 AD FS 3.0 事件 ID 364

我在 Windows Server 2012 上安装了 AD FS 3.0 的全新安装。我正尝试使用此安装在我的内部网络上创建 MFA代码库

AD FS 管理 > 身份验证策略

  • 多因素位置:内部网
  • 选定的多因素身份验证扩展(名称来自 codeplex)

当我访问我的 adfs 网站时(https://adfs.xx.com/adfs/ls/IdpInitiatedSignon.aspx)并使用有效凭据登录,我收到以下错误:

现场

  • 活动 ID:00000000-0000-0000-3d00-0080000000e9
  • 错误时间:2016 年 2 月 1 日星期一 09:04:18 GMT
  • Cookie:已启用
  • 用户代理字符串:Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,如 Gecko)Chrome/48.0.2564.97 Safari/537.36

在服务器上(事件查看器 > 应用程序和服务日志 > AD FS > 管理员)

级别:错误,来源:AD FS,事件 ID:364、任务类别:无

联合被动请求期间遇到错误。

附加数据

协议名称:Saml

依赖方: http://adfs.xx.com/adfs/services/trust

异常详细信息:System.FormatException:输入字符串的格式不正确。在 System.Text.StringBuilder.AppendFormat(IFormatProvider 提供程序、字符串格式、Object[] args)在 System.String.Format(IFormatProvider 提供程序、字符串格式、Object[] args)在 Neos.IdentityServer.MultiFactor.AuthenticationProvider.IsAvailableForUser(声明身份声明,IAuthenticationContext 上下文)位于 Microsoft.IdentityServer.Web.Authentication.External.ExternalAuthenticationHandler.IsAvailableForUser(声明身份声明,IAuthenticationContext authContext)位于 Microsoft.IdentityServer.Web.Authentication.External.ExternalAuthenticationHandler.ProcessContext(ProtocolContext 上下文,IAuthenticationContext authContext,IAccountStoreUserData 用户数据)位于 Microsoft.IdentityServer.Web.Authentication.External.ExternalAuthenticationHandler.Process(ProtocolContext 上下文)位于 Microsoft.IdentityServer.Web.Authentication.AuthenticationOptionsHandler.Process(ProtocolContext 上下文)位于 Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext 上下文)

我尝试通过检查 SSL 证书来修复该问题;它们都已正确安装。没有 ping 错误。我还检查了以下代码:该项目并且也看不出任何缺陷。

有人知道这个错误吗?或者能给我指明正确的方向吗?任何帮助我都非常感谢!

[更新 1]

日志级别为2级;基本错误。

[更新 2]

查看Codeplex 问题

[更新 3]

新版本已修复错误。错误消息已修复。

答案1

ADFS 2.0 的 Microsoft TechNet 参考针对事件 364 作出了如下说明:

此事件可能是由被动请求中的任何错误引起的。在 SAML 和 WS-Federation 场景中,它可能在单点登录 (SSO) 或注销期间发生。

https://technet.microsoft.com/en-us/library/adfs2-troubleshooting-fedpassive-request-failures(v=ws.10)

我知道您使用的是较新版本的 ADFS,但我在 2012 R2 文档中找不到更新的参考资料。不过,描述也没什么用。

来自其他一些来源的参考通常指向证书问题(撤销检查、链中缺少证书)或时间偏差。

http://www.gfi.com/blog/how-to-resolve-adfs-issues-with-event-id-364/

我知道您说证书安装正确,但您可能需要仔细检查是否可以完成吊销检查并且证书链是否有效。最简单的方法是从证书管理单元打开服务器上的证书,并确保常规和证书路径选项卡上没有错误或警告。

我在其他身份验证场景中遇到过时间偏差问题,因此一定要确保所有时钟都匹配。

我遇到的另一个帖子提到了 SPN 的问题。我知道当我设置 ADFS 2012 R2 环境时,我遇到了 SPN 注册问题,因为我的服务器的 FQDN 与我想要的联合服务名称 (adfs.domain.com) 相同,因此无法为 ADFS 注册 SPN。我通过将主机名更改为其他名称并手动注册 SPN 来解决这个问题。不幸的是,我不记得这个问题是否导致了事件 364。

我很好奇的一件事是你没有提到你是否尝试过,那就是你是否在没有 MFA 扩展的情况下测试了 ADFS 身份验证。异常堆栈中显示的扩展名似乎表明它是问题的一部分,但该测试可以帮助你排除 ADFS 部署其他方面的问题。

最后,如果以上方法似乎都无济于事,我会重新检查扩展文档,以确保您没有错过设置中的任何步骤。希望对您有所帮助!

答案2

我在 Windows Server 2016 中遇到了这个问题,结果发现它在我的设置中相当基本。问题是该页面未启用。当我尝试登录时,我收到了错误 364。

我的问题的答案链接是,https://blogs.technet.microsoft.com/rmilne/2017/06/20/how-to-enable-idpinitiatedsignon-page-in-ad-fs-2016/

Set-AdfsProperties –EnableIdpInitiatedSignonPage $True

答案3

我在 Windows Server 2016 中遇到了同样的问题。事实证明,MFA 提供程序en-US仅为但我的浏览器定义了可用的 LCID(语言),但我的浏览器并未发送enen-US将其作为接受的语言。

在浏览器中设置en-US为可接受的语言有暂时的帮助。

但是因为我自己编写了 MFA 提供程序,所以我在实现中至少定义了CultureInfo.InvariantCulture.LCID其中一个。这解决了问题。AvailableLcidsIAuthenticationAdapterMetadata

相关内容