我在 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) 或注销期间发生。
我知道您使用的是较新版本的 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。
Set-AdfsProperties –EnableIdpInitiatedSignonPage $True
答案3
我在 Windows Server 2016 中遇到了同样的问题。事实证明,MFA 提供程序en-US
仅为但我的浏览器定义了可用的 LCID(语言),但我的浏览器并未发送en
或en-US
将其作为接受的语言。
在浏览器中设置en-US
为可接受的语言有暂时的帮助。
但是因为我自己编写了 MFA 提供程序,所以我在实现中至少定义了CultureInfo.InvariantCulture.LCID
其中一个。这解决了问题。AvailableLcids
IAuthenticationAdapterMetadata