【问题标题】:System.ArgumentOutOfRangeException: Not a valid Win32 FileTimeSystem.ArgumentOutOfRangeException:不是有效的 Win32 FileTime
【发布时间】:2017-09-21 10:56:00
【问题描述】:

我正在尝试在我的 ASP.net Web 应用程序中实现 ADFS 身份验证。我已将我的 Web 应用程序配置为使用 adfs 身份验证,并在 adfs 中设置了信赖方信任。当我浏览我的 Web 应用程序时,浏览器被重定向到 adfs 登录页面。提交登录详细信息后,它会显示来自 adfs 的错误页面。我对ADFS了解不多。 adfs 记录的错误如下:

    Exception details: 
Microsoft.IdentityServer.RequestFailedException: MSIS7012: An error occurred while processing the request. Contact your administrator for details. ---> System.ArgumentOutOfRangeException: Not a valid Win32 FileTime.
Parameter name: fileTime
   at System.DateTime.FromFileTimeUtc(Int64 fileTime)
   at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetPasswordExpiryDetails(SafeLsaReturnBufferHandle profileHandle, DateTime& nextPasswordChange, DateTime& lastPasswordChange)
   at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetLsaLogonUserInfo(SafeHGlobalHandle pLogonInfo, Int32 logonInfoSize, DateTime& nextPasswordChange, DateTime& lastPasswordChange, String authenticationType, String issuerName)
   at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetLsaLogonUser(UserNameSecurityToken token, DateTime& nextPasswordChange, DateTime& lastPasswordChange, String issuerName)
   at Microsoft.IdentityServer.Service.Tokens.MSISWindowsUserNameSecurityTokenHandler.ValidateTokenInternal(SecurityToken token)
   at Microsoft.IdentityServer.Service.Tokens.MSISWindowsUserNameSecurityTokenHandler.ValidateToken(SecurityToken token)
   at Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.GetEffectivePrincipal(SecurityTokenElement securityTokenElement, SecurityTokenHandlerCollection securityTokenHandlerCollection)
   at Microsoft.IdentityServer.Web.WSTrust.SecurityTokenServiceManager.Issue(RequestSecurityToken request, IList`1& identityClaimSet)
   at Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.SubmitRequest(MSISRequestSecurityToken request, IList`1& identityClaimCollection)
   at Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.RequestBearerToken(MSISRequestSecurityToken signInRequest, Uri& replyTo, IList`1& identityClaimCollection)
   at Microsoft.IdentityServer.Web.Protocols.PassiveProtocolHandler.RequestSingleSingOnToken(ProtocolContext context, SecurityToken securityToken, SecurityToken deviceSecurityToken)
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.BuildSsoSecurityToken(WSFederationSignInContext context, SecurityToken securityToken, SecurityToken deviceSecurityToken, SecurityToken& ssoSecurityToken)
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.BuildSignInResponseCoreWithSecurityToken(WSFederationSignInContext context, SecurityToken securityToken, SecurityToken deviceSecurityToken)
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.BuildSignInResponse(WSFederationSignInContext federationPassiveContext, SecurityToken securityToken, SecurityToken deviceSecurityToken)
   --- End of inner exception stack trace ---
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.BuildSignInResponse(WSFederationSignInContext federationPassiveContext, SecurityToken securityToken, SecurityToken deviceSecurityToken)
   at Microsoft.IdentityServer.Web.Protocols.WSFederation.WSFederationProtocolHandler.Process(ProtocolContext context)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext, PassiveProtocolHandler protocolHandler)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)

请帮忙。

【问题讨论】:

  • 我使用 Microsoft Edge 浏览器浏览我的 Web 应用程序。在 Google Chrome 和 Internet Explorer 中,Web 应用程序运行良好,没有任何问题。所以我认为 Edge 在提交身份验证详细信息时发布了不正确的数据。

标签: adfs


【解决方案1】:

显然 AD FS 安装程序没有正确初始化以下 GPO 值,并且默认的 unspecified 不起作用。

缺少值会阻止 ADFS 与 Active Directory 进行安全通信。奇怪的是,一些 ADFS 调用成功了。如果没有此设置,最新的 Microsoft.Owin Katana 软件包在我的服务器上确实会失败,如上所述。

网络安全:配置 Kerberos 允许的加密类型 在下面 GPO_name\计算机配置\Windows 设置\安全设置\本地策略\安全选项

  1. 开始 - 运行 - mmc.exe
  2. 文件 - 为本地计算机策略添加管理单元
  3. 导航到上述路径
  4. 选择所有可用选项。

以下文章帮助我解决了这个问题: Network security: Configure encryption types allowed for Kerberos

选择所有加密类型然后重新启动 AD FS 服务器为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2014-10-26
    • 2013-11-03
    • 2017-04-16
    • 2012-07-03
    相关资源
    最近更新 更多