ADFS RelayState问题

时间:2019-04-22 23:55:37

标签: adfs

我将PingFederate用于SP发起的SSO,并将ADFS 3.0用于用户身份验证。它显示一个登录页面,用户可以在其中输入凭据。仅当登录页面闲置10分钟或更长时间,然后用户单击登录时,才会显示以下错误消息,否则此操作将失败。如果登录时间是10分钟之前,则没有问题。我注意到登录页面URL具有RelayState guid。在成功进行身份验证期间,它将创建MSISContext cookie以及附加到它的RelayState指南。从网上阅读的内容出错时,响应返回到ADFS,ADFS会使用不存在的新RelayState名称检查cookie。登录页面闲置10分钟或更长时间时,我该怎么办才能解决此问题。我可以在某个地方更改超时值吗?

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

其他数据

协议名称: 萨姆

依赖方:

异常详细信息: Microsoft.IdentityServer.Web.CookieManagers.InvalidContextException:MSIS7001:被动协议上下文未找到或无效。如果上下文存储在cookie中,则客户端提供的cookie无效。确保将客户端浏览器配置为接受来自此网站的cookie,然后重试此请求。    在Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.GetOriginalRequestFromResponse(ProtocolContext上下文,布尔型deleteCookie)    在Microsoft.IdentityServer.Web.PassiveProtocolListener.ProcessProtocolRequest(ProtocolContext protocolContext,PassiveProtocolHandler protocolHandler)    在Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext上下文)处

1 个答案:

答案 0 :(得分:1)

RelayState被添加到cookie的名称中。如果中继状态更改,则响应将检查具有不存在的新RelayState名称的cookie。确保has not changed,并确保在ADFS上启用了RelayState

根据Windows Server版本,您可能还需要包括其他服务属性。请参阅下面的线程:

例如,Windows Server 2012 R2中的

AD FS包含一个%systemroot%\ADFS\Microsoft.IdentityServer.Servicehost.exe.config文件。如果您要使用的是,请使用与web.config文件元素相同的语法创建一个元素:<useRelayStateForIdpInitiatedSignOn enabled="true" />。在Microsoft.IdentityServer.Servicehost.exe.config文件的<microsoft.identityserver.web>部分中包含此元素。

https://social.technet.microsoft.com/Forums/Lync/en-US/8d692a29-92e0-47e0-be70-d7f9335ab95a/adfs-30-relay-state-issue?forum=winserverDS

https://social.msdn.microsoft.com/Forums/en-US/25239ff7-a33d-4f3e-a7a8-5a3c47d733f7/relaystate-support-in-adfs-30?forum=Geneva

https://nzpcmad.blogspot.com/2016/01/this-post-follows-on-from-idp-initiated.html